«Неподдерживаемая кодировка: DELTA_BYTE_ARRAY» при записи данных паркета в csv с использованием pyspark - PullRequest
0 голосов
/ 01 октября 2018

Я хочу конвертировать паркетные файлы в двоичном формате в CSV-файлы.Я использую следующие команды в spark:

sqlContext.setConf("spark.sql.parquet.binaryAsString","true")

val source =  sqlContext.read.parquet("path to parquet file")

source.coalesce(1).write.format("com.databricks.spark.csv").option("header","true").save("path to csv")

Это работает, когда я запускаю spark на сервере HDFS и запускаю эти команды.Когда я пытаюсь скопировать один и тот же файл партера в мою локальную систему, запускаю pyspark и запускаю эти команды, это выдает ошибку.

Я могу установить в качестве строкового свойства для двоичного файла значение true и могу читать файлы паркета в моем локальном компьютере.pyspark.Но когда я выполняю команду для записи в csv, выдается следующая ошибка:

2018-10-01 14:45:11 WARN ZlibFactory: 51 - Не удалось загрузить / инициализировать библиотеку native-zlib2018-10-01 14:45:12 ОШИБКА Утилиты: 91 - Прекращение задачи java.lang.UnsupportedOperationException: Неподдерживаемая кодировка: DELTA_BYTE_ARRAY в org.apache.spark.sql.execution.datasources.parquet.VectorizedColumnReader.initDataReader (VectorizedColumnReader.java:577) в org.apache.spark.sql.execution.datasources.parquet.VectorizedColumnReader.readPageV2 (VectorizedColumnReader.java:627) в org.apache.spark.sql.execution.arquetReader.ector.получить доступ к $ 100 (VectorizedColumnReader.java:47) по адресу org.apache.spark.sql.execution.datasources.parquet.VectorizedColumnReader $ 1.visit (VectorizedColumnReader.java:550) по адресу org.apache.spark.sql.execution.datasources.parquet.VectorizedColumnReader $ 1.visit (VectorizedColumnReader.java:536) в org.apache.parquet.column.page.DataPageV2.accept (DataPageV2.java:141) в org.apache.spark.sql.execution.datasources.parquet.VectorizedColumnReader.readPage (VectorizedColumnReader.java:536) в org.apache.spark.sql.execution.datasources.parquet.VectorizedColumnReader.readBumn: Vector164) по адресу org.apache.spark.sql.execution.datasources.parquet.VectorizedParquetRecordReader.nextBatch (VectorizedParquetRecordReader.java:263) по адресу org.apache.spark.sql.execution.datasources.parquet.VectorizedParneRard.ader161) в org.apache.spark.sql.execution.datasources.RecordReaderIterator.hasNext (RecordReaderIterator.scala: 39) в org.apache.spark.sql.execution.datasources.FileScanRDD $$ anon $ 1.hasNext (FileScanR:109) в org.apache.spark.sql.execution.datasources.FileScanRDD $$ anon $ 1.nextIterator (FileScanRDD.scala: 186) в org.apache.spark.sql.execution.datasources.FileScanRDD $$ anon $ 1.hasNext (FileScanRDD.scala: 109)

Что необходимо сделать, чтобы устранить эту ошибку на локальном компьютере, какэто же работает в hdfs?Любая идея решить эту проблему будет очень полезна.Спасибо.

1 Ответ

0 голосов
/ 04 декабря 2018

Вы можете попробовать отключить VectorizedReader.

spark.conf.set("spark.sql.parquet.enableVectorizedReader", "false")

Это не решение, но это обходной путь.Последствия его отключения будут https://jaceklaskowski.gitbooks.io/mastering-spark-sql/spark-sql-vectorized-parquet-reader.html

...