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/
希望这有帮助。
我正在学习 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/ 希望这有帮助。