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 表示是否覆盖表中数据

posted @ 2020-10-16 18:16  坤妹家萌萌哒萌新  阅读(622)  评论(0编辑  收藏  举报