hive 建表与 load语法
hive 建表语法
内部表:
create table fzname
(id int,name string,age int,tel string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
- 1
- 2
- 3
- 4
- 5
外部表:
create external table fz_external_name(id int,name string,age int,tel string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
location '/home/sendi/test.txt';
- 1
- 2
- 3
- 4
- 5
分区表:
create table fzname
(id int,name string,age int,tel string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
PARTITIONED BY (month string)
STORED AS TEXTFILE;
- 1
- 2
- 3
- 4
- 5
- 6
数据
123,aa,2,0,hangzhou
245,bb,3,1,beijing
789,cc,2,0,shanghai
201,dd,3,1,guangzhou
指定表中行数据信息
ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ LINES TERMINATED BY ‘\n’
* ROW FORMAT
* TERMINATED BY ‘\t’ 每行数据中字段的分隔符
* LINES TERMINATED BY ‘\n’ 行的分隔符,不指定的时候默认为‘\n’
存储格式
- STORED AS
- TEXTFILE 使用纯文本存储。
- SEQUENCEFILE 对文件进行压缩存储。
分区
- PARTITIONED :表示的是分区,不同的分区会以文件夹的形式存在
外部表
- EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数 据会被一起删除,而外部表只删除元数据,不删除数据。
LOAD 语法
Hive不支持一条一条的用insert语句进行插入操作,也不支持update的操作。数据是以从其他表查询或load的方式,加载到建立好的表中。数据一旦导入,则不可修改。
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1,partcol2=val2 ...)]
- 1
例子
导入到普通表:
LOAD DATA LOCAL INPATH "/home/hadoopUser/data/test1.txt" INTO TABLE test1;
- 1
导入到分区表:
load data local inpath '/liguodong/dataext' into table test1 partition(dt='20150717');
- 1
-
LOCAL
- 指定local,表示从本地文件系统加载(文件会被拷贝到HDFS中)
- 不指定local,表示从HDFS中加载数据
-
OVERWRITE 表示是否覆盖表中数据