提高ORC文件的配置单元的写入速度

时间:2016-08-08 01:34:20

标签: hadoop hive hadoop2 beeline

目前,我的群集中insert overwrite table T1 select * from T2;大约需要100分钟。 Table T1 is ORC格式化并T2 is text格式化。我正在从T2读取60 GB的文本数据并插入ORC表T1(插入后10 GB)。如果我对两个表使用文本格式,则插入大约需要50分钟。在这两种情况下,我们可以做些什么来提高写入速度(我有大表进入)或任何其他建议??

2 个答案:

答案 0 :(得分:1)

这可能是一种正常行为,就像您将数据从文本写入文本一样 - 它只是将数据逐行从一个文件写入另一个文件。文本到ORC除了它之外还会做更多的工作。与文本到文本操作相比,文本到文件导入将对您的数据执行额外的桶分区操作和压缩操作。这是你的时间影响的重要性。 ORC格式在文本格式上有两个主要的好处:

  • 因压缩而节省空间
  • 改善使用数据的访问时间

通常INSERT操作是单次操作,而访问操作将非常频繁。因此,在开始导入数据时通常会花费更多时间,然后由于优化的数据存储而节省空间 优化访问此数据的时间

答案 1 :(得分:1)

我最近提出了一种方法,该方法将源文件拆分为多个分区,从蜂巢中的文本表到兽人表大约需要6分钟,以获取100GB数据。 下面的方法

在将文件插入文本表之前

1。使用split命令将文件分割为unix位置的小分区

2。然后从路径中删除原始文件,只保留文件分割。

插入文本表

3。现在将数据加载到文本表中

4。加载需要花几分钟的时间,您可以看到与unix级别上的分区数量相同

插入orc表

  1. 例如:您已将实际文件分为20个分区     那么您会看到正在集群上运行的20个任务/容器要加载到orc表中,这比其他任务/快得多 我遇到的解决方案

@卑鄙的我