我正在学习Hadoop /大数据技术。我想将数据大量摄取到hive中。我开始使用一个简单的CSV文件,当我尝试使用INSERT
命令按记录加载每个记录时,一个记录插入本身大约需要1分钟。当我将文件放入HDFS然后使用LOAD
命令时,它是瞬间的,因为它只是将文件复制到hive的仓库中。我只是想知道当他们选择LOAD
而不是INSERT
时必须面对的权衡。
答案 0 :(得分:6)
加载 - 将数据加载到表中时,Hive不会进行任何转换。加载操作当前是纯复制/移动操作,可将数据文件移动到与Hive表对应的位置。
插入 -Query可以使用insert子句将结果插入到表中,然后运行map reduce job。因此执行需要一些时间。
如果你想优化/调整insert语句。下面是一些技巧:
1.将hive-site.xml中的执行引擎设置为Tez(如果已安装)
CREATE TABLE A_ORC (
customerID int, name string, age int, address string
) STORED AS ORC tblproperties (“orc.compress" = “SNAPPY”);
INSERT INTO TABLE A_ORC SELECT * FROM A;
2.USE ORCFILE
set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=<your value>;
3。在hive中并发作业可以节省整个作业的运行时间。要实现hive-default.xml,需要更改下面的配置:
{{1}}
有关详情,请访问http://hortonworks.com/blog/5-ways-make-hive-queries-run-faster/ 希望这会有所帮助。