5. 数据装载与写入

Hive 没有常规的行级数据插入、更新和删除操作。向表中写入数据,通常使用批量装载,或者直接将数据文件写入表对应的正确目录。

5.1 LOAD DATA 基本语法

LOAD DATA LOCAL INPATH '/root/file1.txt'
INTO TABLE logs
PARTITION (dt='2018-02-07', country='China');
  • LOCAL 表示源文件位于本地文件系统;不写 LOCAL 时,源路径通常指 HDFS。
  • LOAD DATA 可以把数据文件装载到 Hive 表对应的分区目录。
  • 如果目标分区目录不存在,命令会先创建分区目录,再将数据复制或移动到该目录。
  • 如果目标表不是分区表,应省略 PARTITION 子句。

5.2 覆盖与追加

LOAD DATA LOCAL INPATH '/root/file1.txt'
OVERWRITE INTO TABLE logs
PARTITION (dt='2018-02-07', country='China');
  • 指定 OVERWRITE:先删除目标目录中原有的数据,再装载新数据。
  • 不指定 OVERWRITE:保留原数据,将新文件加入目标目录。
  • 如果目标目录中已有与待装载文件同名的文件,旧的同名文件会被覆盖。

INSERT INTOINSERT OVERWRITE 的区别同样是追加与覆盖:

  • INSERT INTO 向表或分区追加数据,不会因为数据内容重复而报错。
  • INSERT OVERWRITE 覆盖目标表或目标分区中原有的数据。