Здесь вы делаете две разные ошибки. Я не виню тебя; Я был здесь...
Проблема №1
orc.compress
и остальные не относятся к параметрам Spark DataFrameWriter
. Это свойства конфигурации Hive, которые должны быть определены перед созданием объекта hiveContext
...
- либо в
hive-site.xml
доступных для Spark во время запуска
- или в вашем коде, заново создав
SparkContext
...
sc.getConf.get("orc.compress","<undefined>") // depends on Hadoop conf
sc.stop
val scAlt = new org.apache.spark.SparkContext((new org.apache.spark.SparkConf).set("orc.compress","snappy"))
scAlt.getConf.get("orc.compress","<undefined>") // will now be Snappy
val hiveContextAlt = new org.apache.spark.sql.SQLContext(scAlt)
[Изменить] со Spark 2.x скрипт стал бы...
spark.sparkContext.getConf.get("orc.compress","<undefined>") // depends on Hadoop conf
spark.close
val sparkAlt = org.apache.spark.sql.SparkSession.builder().config("orc.compress","snappy").getOrCreate()
sparkAlt.sparkContext.getConf.get("orc.compress","<undefined>") // will now be Snappy
Проблема 2
Spark использует собственные библиотеки SerDe для ORC (а также Parquet, JSON, CSV и т. д.), поэтому ему не нужно соблюдать стандартные свойства Hadoop/Hive.
Существуют некоторые специфичные для Spark свойства для Parquet, и они хорошо задокументированы. а>. Но опять же, эти свойства должны быть установлены перед созданием (или повторным созданием) файла hiveContext
.
Для ORC и других форматов вам придется прибегнуть к параметрам DataFrameWriter
, специфичным для формата; цитируя последний JavaDoc< /а>...
Для записи файлов ORC можно установить следующие специфичные для ORC параметры:
• compression
(по умолчанию snappy
): кодек сжатия для использования при сохранении в файл. Это может быть одно из известных сокращенных имен без учета регистра (none
, snappy
, zlib
и lzo
). Это переопределит orc.compress
Обратите внимание, что кодек сжатия по умолчанию изменился в Spark 2; до этого было zlib
Таким образом, единственное, что вы можете установить, это кодек сжатия, используя
dataframe.write().format("orc").option("compression","snappy").save("wtf")
person
Samson Scharfrichter
schedule
20.01.2017