目前,我的群集中insert overwrite table T1 select * from T2;
大约需要100分钟。 Table T1 is ORC
格式化并T2 is text
格式化。我正在从T2读取60 GB的文本数据并插入ORC表T1(插入后10 GB)。如果我对两个表使用文本格式,则插入大约需要50分钟。在这两种情况下,我们可以做些什么来提高写入速度(我有大表进入)或任何其他建议??
答案 0 :(得分:1)
这可能是一种正常行为,就像您将数据从文本写入文本一样 - 它只是将数据逐行从一个文件写入另一个文件。文本到ORC除了它之外还会做更多的工作。与文本到文本操作相比,文本到文件导入将对您的数据执行额外的桶分区操作和压缩操作。这是你的时间影响的重要性。 ORC格式在文本格式上有两个主要的好处:
通常INSERT操作是单次操作,而访问操作将非常频繁。因此,在开始导入数据时通常会花费更多时间,然后由于优化的数据存储而节省空间 优化访问此数据的时间
答案 1 :(得分:1)
我最近提出了一种方法,该方法将源文件拆分为多个分区,从蜂巢中的文本表到兽人表大约需要6分钟,以获取100GB数据。 下面的方法
在将文件插入文本表之前
1。使用split命令将文件分割为unix位置的小分区
2。然后从路径中删除原始文件,只保留文件分割。
插入文本表
3。现在将数据加载到文本表中
4。加载需要花几分钟的时间,您可以看到与unix级别上的分区数量相同
插入orc表
@卑鄙的我