我在一个文件(test.hql)中有200条Insert语句,将它们插入到ORC格式的hive表中。每次插入都需要花费大量时间(40秒),使整个过程花费近2小时。有没有办法加快速度?
我可以创建一个tmp(文本格式)表,然后做简单的插入覆盖,但这是不允许的。我无法创建新的ddl ..->一个选择是中断测试。HQL在shell中并行执行。有没有其他方法可以让这些插入在Hive本身快速??
多个插入语句比单个插入语句慢。使用UNION ALL:
将200个insert转换为单个insertINSERT 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;
最好创建一个输入文件并立即加载到表中。
创建具有特定行格式(带分隔符)的表
创建表test (a string, b string)行格式字段以','结尾,存储为textfile;
然后载入数据,