Hive基本操作入门
规则语法
大小写规则:
1. hive的数据库名、表名都不区分大小写
2. 建议关键字大写
命名规则:
1. 名字不能使用数字开头
2. 不能使用关键字
3. 尽量不使用特殊符号
库操作语法
创建数据库
创建数据库的本质就是在hive的参数${hive.metastore.warehouse.dir}
对应的目录下,创建一个新的目录,此目录的名称为: 库名.db
。
注意:在创建库或者表时除了创建目录外,还会在mysql中(元数据库),添加元数据(描述信息)
hive> create database zoo;
hive> create database if not exists zoo;
hive> create database if not exists qfdb comment 'this is a database of mine';
hive有一个默认的数据库default,如果不明确的说明要使用哪个库,则使用默认数据库。
查看所有数据库
语法:show databases;
切换数据库
语法:use mydb;
查看数据库信息
语法1:desc database databaseName;
语法2:desc database extended databaseName;
语法3:describe database extended databaseName;
** 删除数据库**
语法1:drop database databasename; #这个只能删除空库
语法2:drop database databasename cascade; #如果不是空库,则可以加cascade强制删除
表操作语法
数据类型
Hive的数据类型分为基本数据类型和复杂数据类型,下面是基本数据类型
其中加粗体是重点要掌握的类型
分类 | 类型 | 描述 | 字面量示例 |
---|---|---|---|
基本类型 | BOOLEAN | true/false | TRUE |
TINYINT | 1字节的有符号整数 -128~127 | 1Y | |
SMALLINT | 2个字节的有符号整数,-32768~32767 | 1S | |
INT | 4个字节的带符号整数 | 1 | |
BIGINT | 8字节带符号整数 | 1L | |
FLOAT | 4字节单精度浮点数 | 1.0 | |
DOUBLE | 8字节双精度浮点数 | 1.0 | |
DEICIMAL | 任意精度的带符号小数 | 1.0 | |
STRING | 字符串,可变长度 | “a”,’b’ | |
VARCHAR | 变长字符串,要设置长度 | “a”,’b’ | |
CHAR | 固定长度字符串 | “a”,’b’ | |
BINARY | 字节数组 | 无法表示 | |
TIMESTAMP | 时间戳,纳秒精度 | 122327493795 | |
DATE | 日期 | ‘2016-03-29’ | |
复杂类型 | ARRAY | 有序的的同类型的集合 | array(1,2) |
MAP | key-value,key必须为原始类型,value可以任意类型 | map(‘a’,1,’b’,2) | |
STRUCT | 字段集合,类型可以不同 | struct(‘1’,1,1.0) | |
UNION | 在有限取值范围内的一个值 | create_union(1,’a’,63) |
** 创建表**
创建表的本质其实就是在对应的数据库目录下面创建一个子目录
,目录名为表名。数据文件就存在这个目录下。
语法1: create table t_user(id int,name string); 语法2:使用库.表的形式create table mydb.t_user(id int,name string);语法3:指定分隔规则形式
create table if not exists t1(
uname string comment 'this is name',
chinese int,
math int,
english int
)
comment 'this is my table'
row format delimited
fields terminated by '\t'
lines terminated by '\n'
stored as textfile;
查看当前表空间中的所有表名
语法:show tables;
# 查看另外一个数据库中的表
show tables in zoo;
查看表结构
desc tableName
desc extended tableName;
describe extended tableName;
修改表结构
- 修改表名alter table oldTableName rename to newTableName;- 修改列名:change column alter table tableName change column oldName newName colType;
- 修改字段类型:alter table tableName change column colName colName colType;- 修改列的位置: 注意,2.x版本后,必须是相同类型进行移动位置。alter table tableName change column colName colName colType after colName1; alter table tableName change column colName colName colType first;- 增加字段:add columnsalter table tableName add columns (sex int,...);- 删除字段:replace columns #注意,2.x版本后,注意类型的问题,替换操作,其实涉及到位置的移动问题。alter table tableName replace columns(id int,name int,size int,pic string);注意:实际上是保留小括号内的字段。
删除表
drop table tableName;
扩展)建表语法
下面是一个常见的创建表的语法:
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] TABLENAME(
[COLUMNNAME COLUMNTYPE [COMMENT 'COLUMN COMMENT'],...])
[COMMENT 'TABLE COMMENT']
[PARTITIONED BY (COLUMNNAME COLUMNTYPE [COMMENT 'COLUMN COMMENT'],...)]
[CLUSTERED BY (COLUMNNAME COLUMNTYPE [COMMENT 'COLUMN COMMENT'],...) [SORTED BY (COLUMNNAME [ASC|DESC])...] INTO NUM_BUCKETS BUCKETS]
[ROW FORMAT ROW_FORMAT]
[STORED AS FILEFORMAT]
[LOCATION HDFS_PATH];
如果要看完整的创建表语法,可以参考下面完整创建表语句:
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
-- (Note: TEMPORARY available in Hive 0.14.0 and later)[(col_name data_type [column_constraint_specification] [COMMENT col_comment], ... [constraint_specification])][COMMENT table_comment][PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)][CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS][SKEWED BY (col_name, col_name, ...) -- (Note: Available in Hive 0.10.0 and later)]
ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
[STORED AS DIRECTORIES][
[ROW FORMAT row_format]
[STORED AS file_format]
| STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)] -- (Note: Available in Hive 0.6.0 and later)
][LOCATION hdfs_path][TBLPROPERTIES (property_name=property_value, ...)]
-- (Note: Available in Hive 0.6.0 and later)[AS select_statement];
-- (Note: Available in Hive 0.5.0 and later; not supported for external tables)
其中具体创建表的参数类型可以参考如下:
data_type: primitive_type| array_type| map_type| struct_type| union_type -- (Note: Available in Hive 0.7.0 and later)primitive_type: TINYINT| SMALLINT| INT| BIGINT| BOOLEAN| FLOAT| DOUBLE| DOUBLE PRECISION -- (Note: Available in Hive 2.2.0 and later)| STRING| BINARY -- (Note: Available in Hive 0.8.0 and later)| TIMESTAMP -- (Note: Available in Hive 0.8.0 and later)| DECIMAL -- (Note: Available in Hive 0.11.0 and later)| DECIMAL(precision, scale) -- (Note: Available in Hive 0.13.0 and later)| DATE -- (Note: Available in Hive 0.12.0 and later)| VARCHAR -- (Note: Available in Hive 0.12.0 and later)| CHAR -- (Note: Available in Hive 0.13.0 and later)array_type: ARRAY < data_type >map_type: MAP < primitive_type, data_type >struct_type: STRUCT < col_name : data_type [COMMENT col_comment], ...>union_type: UNIONTYPE < data_type, data_type, ... > -- (Note: Available in Hive 0.7.0 and later)row_format: DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char][MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char][NULL DEFINED AS char] -- (Note: Available in Hive 0.13 and later)| SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]file_format:: SEQUENCEFILE| TEXTFILE -- (Default, depending on hive.default.fileformat configuration)| RCFILE -- (Note: Available in Hive 0.6.0 and later)| ORC -- (Note: Available in Hive 0.11.0 and later)| PARQUET -- (Note: Available in Hive 0.13.0 and later)| AVRO -- (Note: Available in Hive 0.14.0 and later)| JSONFILE -- (Note: Available in Hive 4.0.0 and later)| INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classnamecolumn_constraint_specification:: [ PRIMARY KEY|UNIQUE|NOT NULL|DEFAULT [default_value]|CHECK [check_expression] ENABLE|DISABLE NOVALIDATE RELY/NORELY ]default_value:: [ LITERAL|CURRENT_USER()|CURRENT_DATE()|CURRENT_TIMESTAMP()|NULL ] constraint_specification:: [, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE RELY/NORELY ][, PRIMARY KEY (col_name, ...) DISABLE NOVALIDATE RELY/NORELY ][, CONSTRAINT constraint_name FOREIGN KEY (col_name, ...) REFERENCES table_name(col_name, ...) DISABLE NOVALIDATE [, CONSTRAINT constraint_name UNIQUE (col_name, ...) DISABLE NOVALIDATE RELY/NORELY ][, CONSTRAINT constraint_name CHECK [check_expression] ENABLE|DISABLE NOVALIDATE RELY/NORELY ]
数据导入
[root@my01 hive]# mkdir /hivedata
[root@my01 hive]# cd /hivedata
[root@my01 hive]# vi user.txt
加载数据到Hive,一般分为两种:
- 一种是从本地Linux上加载到Hive中
- 另外一种是从HDFS加载到Hive中
方法1使用hdfs dfs -put
将本地文件上传到表目录下
hdfs dfs -put ./u1.txt /user/hive/warehouse/mydb1.db/u1
方法在hive中使用load
命令
load data [local] inpath '文件路径' [overwrite] into table 表名加载数据时:
1. 最好是写绝对路径,从根开始写。
2. 写相对路径也是可以的,但是一定要记住你登录hive时的位置,从当前位置写相对路径
3. ~在hive中,是相对路径的写法
4. 使用benline工具进行远程登录(客户端与服务端不在同一台机器)时,使用以下语句时:load data local inpath '文件路径' [overwrite] into table 表名会有一个大坑:local是指服务端的文件系统。
方法3从另外一张表(也可称之为备份表)中动态加载数据
insert into table tableName2 select [.....] from tableName1;扩展内容:向多张表中插入数据的语法from tableName1insert into tableName2 select * where 条件insert into tableName3 select * where 条件.....
注意: tableName2表中的字段个数必须和tableName1表中查询出来的个数相同
**方法4:**克隆表数据
- create table if not exists tableName2 as select [....] from tableName1;
- create table if not exists tableName2 like tableName1 location 'tableName1的存储目录的路径'扩展内容:只复制表结构
create table if not exists tableName2 like tableName1;
加载数据的本质:
- 如果数据在本地,加载数据的本质就是将数据
copy
到hdfs上的表目录下。 - 如果数据在hdfs上,加载数据的本质是将数据移动到hdfs的表目录下。
注意:hive使用的是严格的读时模式:加载数据时不检查数据的完整性,读时发现数据不对则使用NULL来代替。
而mysql使用的是写时模式:在写入数据时就进行检查
Hive基本操作入门相关推荐
- Hive从入门到放弃——HiveQL表级别DDL设计的艺术性(五)
HiveQL数据库中的表DDL操作 博客Hive从入门到放弃--HiveQL数据库级别DDL设计的艺术性(四)聊完了数据库的基本操作,我们再来聊聊Hive内表的操作. 创建表 官方推荐建表的结 ...
- Hive从入门到放弃——Hive表DML的艺术性(八)
背 景 HiveQL语法和MySQL的语法很像,当然Hive本身作为大数据的数据仓库,本身对数据的修改和删除并不铭感,虽然Hive支持通过ORC为存储文件实现数据的删除和修改,但是这个功能相对比较 ...
- Hive基本操作,DDL操作(创建表,修改表,显示命令),DML操作(Load Insert Select),Hive Join,Hive Shell参数(内置运算符、内置函数)等
1. Hive基本操作 1.1DDL操作 1.1.1 创建表 建表语法 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_nam ...
- hadoop hive hbase 入门学习 (二)
hadoop 自学系列 hadoop hive hbase 入门学习 (一) hadoop安装.hdfs学习及mapreduce学习 hadoop 软件下载 (hadoo ...
- Hive 快速入门(全面)
转载: https://www.codercto.com/a/5110.html 前言 我写这篇文章的目的是尽可能全面地对Hive进行入门介绍,这篇文章是基于hive-1.0.0版本介绍的,这个版本的 ...
- Apache Hive 快速入门 (CentOS 7.3 + Hadoop-2.8 + Hive-2.1.1)
2019独角兽企业重金招聘Python工程师标准>>> 本文节选自<Netkiller Database 手札> 第 63 章 Apache Hive 目录 63.1. ...
- Linux软件包管理基本操作入门
导读 大多数现代类 Unix 操作系统都提供了一个集中的软件包管理机制,以帮助用户搜索.安装和管理软件.而软件通常以「包」的形式存储在仓库「repository」中,对软件包的使用和管理被称为包管理. ...
- 数据仓库—stg层_数据仓库之Hive快速入门 - 离线实时数仓架构
数据仓库VS数据库 数据仓库的定义: 数据仓库是将多个数据源的数据经过ETL(Extract(抽取).Transform(转换).Load(加载))理之后,按照一定的主题集成起来提供决策支持和联机分析 ...
- ’Hive快速入门课程视频【菜鸟窝出品】
课程背景 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行.其优点是学习成本低, ...
最新文章
- Linux shell只读变量
- 费解 | 为什么很多程序员工作时都戴耳机?
- liferay-ui:search-container 用法
- 国家自然科学基金项目经费怎么用有了新规定
- 在小程序中使用腾讯视频插件播放教程视频
- mysql 转发_【mysql】【转发】my.cnf 讲解
- 小世界网络——利用Networkx分析武汉公交网络
- WAV音乐文件无法修改标题
- Qt使用资源管理器打开指定本地文件夹
- Android性能优化之页面优化
- [复变函数]第24堂课 6.3 辐角原理
- React启动时报Plugin “react“ was conflicted between “package.json ......错误的解决办法。
- 倒在转“码”路上的文科生
- Firefox如何给页面权限
- prim算法之处女作
- 资深EMC工程师总结:EMC整改流程及常见问题
- PLA:从线性可分到线性不可分的演化过程
- 2021灾难频发,人类将来或面临8种灭绝方式,希望是第6种
- 如何下载Hbuilder,而不是下载Hbuilder X?
- SqlServer Tigger
热门文章
- %02 java_Java基础02—变量、运算符和数据类型转换(示例代码)
- sobel算子_边缘检测算法4.-教你动手实现kirsch和robinson算子
- linux学习笔记:磁盘格式化与磁盘检验命令
- java单线程共享,「Java并发编程实战」之对象的共享
- 生怕认可java+flatmap,RxJava 好难理解的一个 FlatMap 的例子
- python密码传参有特殊字符如何解决_am start的总结,-d参数的总结,以及python中传递内容包含中文及特殊字符的解决方案...
- android中webview使用打开系统相机录像_有没有什么高效使用微信的经验?
- python程序字符串中字符排序_python字符串排序方法
- rman一致性备份oracle数据库可以在非归档模式下么,探索ORACLE之RMAN_03一致性备份...
- python字典数据类型笔记_python笔记--数据类型--字典