Чтение Zstandard-сжатого файла в Spark 2.3.0

Apache Spark предположительно поддерживает алгоритм сжатия Zstandard от Facebook начиная с версии Spark 2.3.0 ( https://issues.apache.org/jira/browse/SPARK-19112), но на самом деле я не могу прочитать сжатый Zstandard файл:

$ spark-shell

...

// Short name throws an exception
scala> val events = spark.read.option("compression", "zstd").json("data.zst")
java.lang.IllegalArgumentException: Codec [zstd] is not available. Known codecs are bzip2, deflate, uncompressed, lz4, gzip, snappy, none.

// Codec class can be imported
scala> import org.apache.spark.io.ZStdCompressionCodec
import org.apache.spark.io.ZStdCompressionCodec

// Fully-qualified code class bypasses error, but results in corrupt records
scala> spark.read.option("compression", "org.apache.spark.io.ZStdCompressionCodec").json("data.zst")
res4: org.apache.spark.sql.DataFrame = [_corrupt_record: string]

Что мне нужно сделать, чтобы прочитать такой файл?

Окружающая среда - AWS EMR 5.14.0.

1 ответ

Согласно этому комментарию, поддержка Zstandard в Spark 2.3.0 ограничена внутренними и случайными выходами.

Для чтения или записи файлов Zstandard используется Hadoop org.apache.hadoop.io.compress.ZStandardCodec, который был представлен в Hadoop 2.9.0 (2.8.3 включен в EMR 5.14.0).

Другие вопросы по тегам