蜂巢插入与蜂巢负载:有什么权衡?

时间:2017-01-26 16:09:39

标签: hive hdfs hiveql apache-nifi

我正在学习Hadoop /大数据技术。我想将数据大量摄取到hive中。我开始使用一个简单的CSV文件,当我尝试使用INSERT命令按记录加载每个记录时,一个记录插入本身大约需要1分钟。当我将文件放入HDFS然后使用LOAD命令时,它是瞬间的,因为它只是将文件复制到hive的仓库中。我只是想知道当他们选择LOAD而不是INSERT时必须面对的权衡。

1 个答案:

答案 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/ 希望这会有所帮助。