hdfs—配置单元插入与配置单元负载:有何权衡?

vlju58qv  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(217)

我在学习hadoop/大数据技术。我想将大量数据接收到Hive中。我开始使用一个简单的csv文件,当我尝试使用 INSERT 命令逐个记录加载每个记录,插入一个记录本身大约需要1分钟。当我把文件放入hdfs,然后使用 LOAD 命令,因为它只是将文件复制到hive的仓库中。我只想知道,当一个人选择加入时,他们必须面对什么样的权衡 LOAD 而不是 INSERT .

rvpgvaaj

rvpgvaaj1#

加载配置单元在将数据加载到表中时不进行任何转换。加载操作目前是纯复制/移动操作,将数据文件移动到与配置单元表对应的位置。
可以使用insert子句将insert查询结果插入到表中,然后insert子句运行map reduce作业,因此需要一些时间来执行。
如果您想优化/优化insert语句,请参阅下面的一些技巧:
1.将hive-site.xml中的执行引擎设置为tez(如果已经安装)

set hive.execution.engine=tez;

2.使用文件

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.在配置单元中运行并发作业可以节省整个作业运行时间。要实现配置单元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/ 希望这有帮助。

相关问题