【发布时间】:2016-10-25 06:48:10
【问题描述】:
我正在使用 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 文件保存优化的有用主题吗?
【问题讨论】:
标签: performance apache-spark spark-dataframe orc