我在单个文件(test.hql)中有200个Insert语句,以将它们插入到ORC格式的hive表中。每次插入需要很长时间(40秒),使整个过程花费近2个小时。有没有办法加快速度?
我本可以创建一个tmp(文本格式)表,然后执行简单的插入覆盖但不允许这样做..我无法创建新的DDL .. - >一种选择是在shell中破坏test.hql并在并行进程中执行。 有没有其他方法可以在Hive本身快速插入这些插件?
答案 0 :(得分:0)
许多插入语句比单个语句慢。使用UNION ALL将您的200个插入转换为单个插入:
Sub concatYears()
Dim lastRow As Long, i As Long, begYr As Long, endYr As Long, yrs As Long, yrStr As String
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow '<-- assuming data starts from row 2
begYr = Cells(i, 1).Value
endYr = Cells(i, 2).Value
yrStr = ""
For yrs = begYr To endYr - 1
yrStr = yrStr & Str(yrs) & ", "
Next yrs
yrStr = yrStr & Str(endYr)
Cells(i, 3).Value = yrStr
Next i
End Sub
答案 1 :(得分:0)
最好你可以创建一个输入文件并立即加载到表中。
创建具有特定行格式的表(带分隔符)
创建表格测试(字符串,b字符串)行格式字段,以&#39;,&#39;存储为文本文件;
然后将数据加载到其中,
路径中的LOAD DATA&#34; / path&#34;到table table_name;