spark swift集成Parquet地板

f4t66c6m  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(379)

我已经使用spark 1.3.0并使用它将Parquet文件写入openstack swift对象存储库一段时间了。我用了大约12个分区的Parquet文件写Parquet文件的几个部分在雨燕。写文件没问题。但当我试图通过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:我也注意到,如果我不分区Parquet文件,阅读是完美的。
有人在使用spark,openstack swift吗?

q9rjltbz

q9rjltbz1#

我一直在使用spark 1.3.0和openstack swift作为我的存储后端,遇到了完全相同的问题。
使用spark的缓存功能提供了一个有效的解决方法,可以在hadoop云的swift支持中等待实际的修复。

val df = spark.read.parquet("your_swift_url").persist()

相关问题