hive insert语句占用的时间太长

vh0rcniy  于 2021-06-28  发布在  Hive
关注(0)|答案(2)|浏览(730)

我在一个文件(test.hql)中有200条insert语句,用于将它们插入orc格式的配置单元表中。每个insert都需要相当长的时间(40秒),整个过程大约需要2个小时。有没有办法加快速度?
我可以创建一个tmp(文本格式)表,然后执行简单的插入覆盖,但这是不允许的。。我无法创建新的DDL…->一种选择是在shell中中断test.hql并在并行进程中执行。有没有其他方法可以让这些插入物在Hive里快速插入??

cmssoen2

cmssoen21#

更好的方法是创建一个输入文件并立即加载到表中。
创建具有特定行格式(带分隔符)的表
创建表test(a string,b string)行格式字段,以“,”结尾,存储为textfile;
然后把数据加载进去,
将数据inpath“/path”加载到表\u name;

vu8f3i0k

vu8f3i0k2#

许多insert语句比单个语句慢。使用union all将200个插入转换为单个插入:

INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] 
select value1 as col1, value2 as col2... coln from default.dual union all
select value1 as col1, value2 as col2... coln from default.dual union all
...
select value1 as col1, value2 as col2... coln from default.dual;

相关问题