Spark 2.3+ использовать parquet.enable.dictionary? - PullRequest
0 голосов
/ 14 сентября 2018

Я ищу документацию о том, как parquet.enable.dictionary будет использоваться в Spark (последняя версия 2.3.1).При создании SparkSession может быть установлено значение «true» или «false».

Я гуглил любую документацию по этой функции и ничего не нашел, или, по крайней мере, ничего недавно.

В частности, этомои вопросы:

Является ли parquet.filter.dictionary.enabled = true или = false по умолчанию в Spark 2.3.1?

Является ли эта функция включенной (установленной в true) до Я записываю файлы Parquet таким образом, что библиотека Spark Parquet вычисляет и записывает информацию словаря на диск?

Этот параметр игнорируется, когда Spark читает файлы Parquet, или мне все еще нужно установить значение true для чтения паркета (а также для записи)?

Когда я должен использовать эту функцию (установлено в true)?Плюсы / минусы?

Я также вижу ссылки на этот spark.hadoop.parquet.enable.dictionary , когда я гуглил для parquet.enable.dictionary.Это связано?Что мне следует использовать?

Существуют ли какие-либо другие настройки Spark + Parquet , которые мне необходимо знать?

Большое спасибо!

1 Ответ

0 голосов
/ 14 сентября 2018

Это конфиг паркетной свечи, установленный в false по умолчанию -

spark.sql.parquet.mergeSchema
spark.sql.parquet.respectSummaryFiles
spark.sql.parquet.binaryAsString
spark.sql.parquet.int96TimestampConversion
spark.sql.parquet.int64AsTimestampMillis
spark.sql.parquet.writeLegacyFormat
spark.sql.parquet.recordLevelFilter.enabled

Ниже установлены значения по умолчанию -

spark.sql.parquet.int96AsTimestamp
spark.sql.parquet.filterPushdown
spark.sql.parquet.filterPushdown.date
spark.sql.parquet.filterPushdown.timestamp
spark.sql.parquet.filterPushdown.decimal
spark.sql.parquet.filterPushdown.string.startsWith
spark.sql.parquet.enableVectorizedReader

Эти свойства требуют значения и перечисляют его по умолчанию-

spark.sql.parquet.outputTimestampType = INT96
spark.sql.parquet.compression.codec = snappy
spark.sql.parquet.pushdown.inFilterThreshold = 10
spark.sql.parquet.output.committer.class = org.apache.parquet.hadoop.ParquetOutputCommitter
spark.sql.parquet.columnarReaderBatchSize = 4096

Что касается parquet.enable.dictionary, он еще не поддерживается Spark. Но это может быть установлено в sqlContext как -

sqlContext.setConf("parquet.enable.dictionary", "false")

Значение по умолчанию для этого свойства равно true в паркете. Следовательно, это должно быть верно, когда паркетный код вызывается из Spark.

...