Hive笔记4-加载数据

Hive加载数据

在Hive中建好表之后,需要将数据加载进来,以便做后续查询分析,本文介绍向Hive表中加载数据的几种方式。

建表时候直接指定

如果你的数据已经在HDFS上存在,已经为结构化数据,并且数据所在的HDFS路径不需要维护,那么可以直接在建表的时候使用location指定数据所在的HDFS路径即可。

CREATE [EXTERNAL] TABLE t_lxw1234 (
day STRING,
url STRING)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ' ' 
stored as textfile 
location '/tmp/lxw1234/';

这里内部表和外部表都可以指定,但需要注意,如果是内部表,那么在DROP该表的时候,同时会将LOCATION所指定的目录一起删除。

从本地文件系统或者HDFS的一个目录中加载

如果数据在本地,或者HDFS的某一个目录下,需要加载到目标中或分区中,那么使用LOAD DATA命令即可加载数据:

  • 加载本地文件
LOAD DATA LOCAL INPATH ‘/home/lxw1234/t_lxw1234/’
INTO TABLE t_lxw1234 PARTITION (day = ‘2015-06-15’);
  • 加载HDFS文件
LOAD DATA INPATH ‘/user/lxw1234/t_lxw1234/’
INTO TABLE t_lxw1234 PARTITION (day = ‘2015-06-15’);

从一个子查询中加载数据

INSERT overwrite TABLE t_lxw1234 PARTITION (day = ‘2015-06-15’)
SELECT day,url from source_table;

导出Hive中的数据到文件系统

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/lxw1234/' 
  ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
SELECT * FROM t_lxw1234;

Ps:其他

  • order by(全局排序) vs. sort by(分区内排序)
  • distribute by vs. cluster by(类似distribute by ,自动排序)
  • Hive查询中有两个虚拟列:
    • INPUT__FILE__NAME:数据对应的HDFS文件名;
    • BLOCK__OFFSET__INSIDE__FILE:该行记录在文件中的偏移量;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容