Интеграционный паркет Spark Swift

Я использую Spark 1.3.0 и уже некоторое время использую его для записи файлов Parquet в хранилище Openstack Swift Object. Я использую около 12 разделов для файлов паркета, которые записывают файл паркета в несколько частей на Swift. Нет проблем с записью файлов. Но когда я пытаюсь прочитать его через Spark, я получаю такую ​​ошибку:

     ERROR Executor: Exception in task 9.0 in stage 2.0 (TID 22)
java.io.EOFException
    at java.io.DataInputStream.readFully(DataInputStream.java:197)
    at java.io.DataInputStream.readFully(DataInputStream.java:169)
    at parquet.hadoop.ParquetFileReader$ConsecutiveChunkList.readAll(ParquetFileReader.java:730)
    at parquet.hadoop.ParquetFileReader.readNextRowGroup(ParquetFileReader.java:490)
    at parquet.hadoop.InternalParquetRecordReader.checkRead(InternalParquetRecordReader.java:116)
    at parquet.hadoop.InternalParquetRecordReader.nextKeyValue(InternalParquetRecordReader.java:193)
    at parquet.hadoop.ParquetRecordReader.nextKeyValue(ParquetRecordReader.java:204)
    at org.apache.spark.rdd.NewHadoopRDD$$anon$1.hasNext(NewHadoopRDD.scala:143)
    at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:39)
    at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
    at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:308)
    at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:327)
    at org.apache.spark.util.collection.ExternalSorter.insertAll(ExternalSorter.scala:210)
    at org.apache.spark.shuffle.sort.SortShuffleWriter.write(SortShuffleWriter.scala:63)
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:68)
    at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:41)
    at org.apache.spark.scheduler.Task.run(Task.scala:64)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:203)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

Я использую патч Hadoop-Swift, доступный через https://github.com/openstack/sahara-extra/tree/master/hadoop-swiftfs, который позволяет Hadoop распознавать Swift как файловую систему.

Примечание 1. Если загрузить файл из Swift в локальную файловую систему, Spark сможет отлично прочитать файл.

Примечание 2: я также заметил, что если я не разбиваю паркетный файл, чтение идеальное.

Кто-нибудь, кто использует Spark, Openstack Swift?


person apurva.nandan    schedule 04.09.2015    source источник
comment
Я использую Spark и Swift. Вы решили проблему? Время от времени я вижу одно и то же.   -  person Sam Stoelinga    schedule 21.01.2016
comment
Я зарегистрировал здесь ошибку: issues.apache.org/jira/browse/SPARK- 12947   -  person Sam Stoelinga    schedule 21.01.2016
comment
@SamStoelinga Нет, до сих пор я не мог решить эту проблему. Благодарим за создание проблемы!   -  person apurva.nandan    schedule 22.01.2016


Ответы (1)


Я также использовал Spark 1.3.0 с Openstack Swift в качестве серверной части хранилища и столкнулся с той же проблемой.

Использование функции кеширования Spark предоставило допустимый обходной путь, ожидающий фактического исправления в быстрой поддержке hadoop-cloud.

val df = spark.read.parquet("your_swift_url").persist()
person Fractal    schedule 28.09.2018