我正在尝试在 Spark(2.3) 中生成数据集并以 ORC 文件格式编写。
我正在尝试设置 ORC 条带大小和压缩大小的一些属性。我从中得到了暗示this所以帖子。但 Spark 不尊重这些属性,并且生成的 ORC 文件中的条带大小比我设置的要小得多。
val conf: SparkConf = new SparkConf().setAppName("App")
.set("spark.sql.orc.impl", "native")
.set("spark.sql.hive.convertMetastoreOrc", "true")
.set("spark.sql.orc.stripe.size", "67108864")
.set("spark.sql.orc.compress.size", "262144")
.set("orc.stripe.size", "67108864")
.set("orc.compress.size", "262144")
data.sortWithinPartitions("column")
.write
.option("orc.compress", "ZLIB")
.mode("overwrite")
.format("org.apache.spark.sql.execution.datasources.orc")
.save(outputPath)
我还尝试将数据写为:
data.sortWithinPartitions("column")
.write
.option("orc.compress", "ZLIB")
.option("orc.stripe.size", "67108864")
.option("orc.compress.size", "262144")
.mode("overwrite")
.format("org.apache.spark.sql.execution.datasources.orc")
.save(outputPath)
但没有运气。
ORC 文件转储的相关部分:
File Version: 0.12 with ORC_135
Rows: 3174228
Compression: ZLIB
Compression size: 32768
...
Stripe: offset: 3 data: 6601333 rows: 30720 tail: 2296 index: 16641
Stripe: offset: 6620273 data: 6016778 rows: 25600 tail: 2279 index: 13595
Stripe: offset: 12652925 data: 6031290 rows: 25600 tail: 2284 index: 13891
Stripe: offset: 18700390 data: 6132228 rows: 25600 tail: 2283 index: 13805
Stripe: offset: 24848706 data: 6066176 rows: 25600 tail: 2267 index: 13855
Stripe: offset: 30931004 data: 6562819 rows: 30720 tail: 2308 index: 16851
Stripe: offset: 37512982 data: 6462380 rows: 30720 tail: 2304 index: 16994
Stripe: offset: 43994660 data: 6655346 rows: 30720 tail: 2291 index: 17031