Как установить размер полосы ORC в Spark - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь сгенерировать набор данных в Spark (2.3) и записать его в формате файла ORC. Я пытаюсь установить некоторые свойства для размера полосы ORC и размера сжатия. Я взял подсказки от этого ТАК сообщения. Но 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

1 Ответ

0 голосов
/ 07 ноября 2018

У меня была такая же проблема, и в моем случае она, похоже, относится к используемой версии Hortonworks HDP. В этом посте вы можете увидеть аналогичное обсуждение, где они предлагают использовать HDP 2.6.3+ с Spark 2.2+, в котором используются более новые библиотеки Hive:

https://community.hortonworks.com/questions/159893/spark-orc-stripe-size.html

Возможно, ваш Spark 2.3 все еще настроен на использование более старой библиотеки Hive 1.2.1.

...