我在单个文件 (test.hql) 中有 200 个插入语句,用于将它们插入到 ORC 格式的配置单元表中。每次插入都需要大量时间(40 秒),使得整个过程需要将近 2 个小时。有没有办法加快速度?
我本可以创建一个 tmp(文本格式)表,然后进行简单的插入覆盖,但这是不允许的。我无法创建新的 DDL。-> 一种选择是在 shell 中破坏 test.hql 并在并行进程中执行。有没有其他方法可以让这些插入在 Hive 本身中快速?
许多插入语句比单个语句慢。使用 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;
更好的是,您可以创建一个输入文件并立即加载到表中。
创建具有特定行格式的表(带分隔符)
创建表测试(a字符串,b字符串)以','结尾的行格式字段存储为文本文件;
然后将数据加载到其中,
将路径中的数据“/路径”加载到表 table_name 中;