我,使用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文件保存优化的有用主题吗?
答案 0 :(得分:1)
这种性能下降是由于您尝试加载的文件大小造成的。要利用spark的分布式计算,请确保您有多个小文件,以使转换更加平行。尝试将8 GB文件分成多个大小为64 MB的文件。此外,从您的代码中,您不需要在保存之前将数据框注册到临时表,因为您以后不会用于任何其他转换。