Hive insert 与 Hive Load:权衡取舍是什么?

Hive insert vs Hive Load: What are the trade offs?

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

时必须面对的权衡是什么

Load- Hive 在将数据加载到表中时不进行任何转换。加载操作目前是纯 copy/move 操作,将数据文件移动到与 Hive 表对应的位置。

Insert-查询结果可以使用insert子句插入到表中,然后运行map reduce jobs.So执行需要一些时间。

万一你想 optimize/tune 插入 statements.Below 有一些技巧:

1.Setting hive-site.xml 中的执行引擎到 Tez(如果已安装)

 set hive.execution.engine=tez;

2.USE ORCFILE

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;

3。在 hive 中运行并发作业可以节省整个作业 运行 时间。要实现 hive-default.xml,需要更改以下配置:

set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=<your value>;

更多信息,您可以访问http://hortonworks.com/blog/5-ways-make-hive-queries-run-faster/ 希望这有帮助。