в этом случае можно использовать кодек для распаковки паркетных файлов в spark

Я новичок в Spark и пытаюсь понять, как работают разные кодеки сжатия. Я использую Cloudera Quickstart VM 5.12x, Spark 1.6.0 и API Python.

Если я сжимаю и сохраняю как файлы Parquet, используя следующую логику:

sqlContext.setConf("spark.sql.parquet.compression.codec","snappy")
df.write.parquet("/user/cloudera/data/orders_parquet_snappy")

то я могу прочитать их как:

sqlContext.read.parquet("/user/cloudera/data/orders_parquet_snappy").show()

Я считаю, что выше прочитанное не нужно распаковывать и читать. Интересно, почему и в каком состоянии я буду использовать несжатый ?

sqlContext.setConf("spark.sql.parquet.compression.codec", "uncompressed")

Не уверен, что мое понимание правильное.


person singhak.bhu    schedule 09.01.2018    source источник


Ответы (1)


Сжатие хорошо, потому что оно экономит неактивное хранилище и пропускную способность передачи (как с точки зрения локального дискового ввода-вывода, так и с точки зрения сети), но это происходит за счет вычислительной мощности. Это метрики, которые следует учитывать при выборе алгоритма сжатия данных: в зависимости от ваших ожиданий вы можете выбрать подходящий.

Но в целом Snappy был специально разработан, чтобы быть относительно легким для ЦП, обеспечивая при этом достаточную экономию памяти/пропускной способности, что делает его более чем подходящим для многих случаев использования (именно поэтому он используется по умолчанию).

Разумное предложение, конечно, состоит в том, чтобы измерить и принять решение, основанное на ваших наблюдениях за вашей конкретной установкой, но я считаю справедливым сказать, что вы не должны ожидать значительного относительного улучшения в использовании ресурсов (но, вероятно, достаточно, чтобы иметь некоторую экономическую значимость если вы работаете с действительно массивным кластером).

person stefanobaghino    schedule 09.01.2018
comment
Спасибо. Нужно ли использовать несжатый файл перед чтением сжатого файла? - person singhak.bhu; 10.01.2018
comment
Нет, алгоритм сжатия должен подбираться автоматически и указывать его нужно только при записи. - person stefanobaghino; 11.01.2018