我正在使用 Spark 1.6.1,在 Spark 世界中我还是个新手。我正在将文件保存为 ORC 格式。
我正在尝试将相对较大的文本文件(8 GB)解析为 ORC。文件通常很宽,即 200 多列。
列类型是基本的:Int、String、Date。我解析所有行,然后执行 persist() 并保存到文件中。
这是基本代码:
val schema = StructType(
myTableColumns.map(
c => StructField(
//Field descriptions ~200 fields
)))
val rowRDD = rddProcessedLines.map(line => {
Row.fromSeq(line)
})
val fileSchemaRDD = hiveContext.createDataFrame(rowRDD, schema)
fileSchemaRDD.registerTempTable("output_table_name")
fileSchemaRDD.write.orc("output_folder")
问题是性能很差。这比从同一文本文件导入关系数据库更糟糕。
我尝试在 Snappy 和 LZF 压缩器之间切换,这里没有太多收获。我还使用了节点的内存大小和内核数量,而不是更好。然后我开始更改缓冲区大小等以进行压缩。我看到大量列的性能急剧下降。有人可以告诉在哪里看吗?有人可以指出有关 ORC 文件保存优化的有用主题吗?