性能改进可以节省Spark ORC

时间:2016-06-23 05:32:52

标签: performance apache-spark spark-dataframe orc

我,使用Spark 1.6.1,我在Spark世界中还是一个新手。 我正在使用保存文件到ORC格式。

我正在尝试将相对较大的文本文件(8 GB)解析为ORC。文件通常很宽,即200多列。

列类型是基本的:Int,String,Date。 我解析所有行,然后执行pers()并保存到文件中。

这是基本代码:

{ 
   "object": "dr_persons", 
   "q": { 
      "person_type" : 4
   }, 
   "fields": ["first_name", "last_name"] 
} 

问题是性能很差。它比从同一文本文件导入到关系数据库更糟糕。

我试图在Snappy和LZF压缩机之间切换,这里收益不大。 我还使用内存大小来表示节点和内核数量,而不是更好。 然后我开始改变缓冲区大小等进行压缩。 我看到大量列的性能急剧下降。 有人可以告诉你去哪儿吗?有人可以指出有关ORC文件保存优化的有用主题吗?

1 个答案:

答案 0 :(得分:1)

这种性能下降是由于您尝试加载的文件大小造成的。要利用spark的分布式计算,请确保您有多个小文件,以使转换更加平行。尝试将8 GB文件分成多个大小为64 MB的文件。此外,从您的代码中,您不需要在保存之前将数据框注册到临时表,因为您以后不会用于任何其他转换。