apache-spark - Apache Spark 无法读取使用流式作业编写的 parquet 文件夹
问题描述
当我尝试使用选项“mergeSchema”:“true”读取当前正在使用另一个火花流作业编写的 parquet 文件夹时,我收到一个错误:
java.io.IOException: Could not read footer for file
val df = spark
.read
.option("mergeSchema", "true")
.parquet("path.parquet")
如果没有模式合并,我可以很好地读取文件夹,但是是否可以通过模式合并读取这样的文件夹,而不管可能的副业是否更新它?
完全例外:
java.io.IOException: Could not read footer for file: FileStatus{path=hdfs://path.parquet/part-00000-20199ef6-4ff8-4ee0-93cc-79d47d2da37d-c000.snappy.parquet; isDirectory=false; length=0; replication=0; blocksize=0; modification_time=0; access_time=0; owner=; group=; permission=rw-rw-rw-; isSymlink=false}
at org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat$$anonfun$readParquetFootersInParallel$1.apply(ParquetFileFormat.scala:551)
at org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat$$anonfun$readParquetFootersInParallel$1.apply(ParquetFileFormat.scala:538)
at org.apache.spark.util.ThreadUtils$$anonfun$3$$anonfun$apply$1.apply(ThreadUtils.scala:287)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: java.lang.RuntimeException: hdfs://path.parquet/part-00000-20199ef6-4ff8-4ee0-93cc-79d47d2da37d-c000.snappy.parquet is not a Parquet file (too small length: 0)
at org.apache.parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:514)
at org.apache.parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:505)
at org.apache.parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:499)
at org.apache.parquet.hadoop.ParquetFileReader.readFooter(ParquetFileReader.java:476)
at org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat$$anonfun$readParquetFootersInParallel$1.apply(ParquetFileFormat.scala:544)
... 9 more
解决方案
推荐阅读
- ruby-on-rails - 如何使用 ShopifyAPI::GraphQL 通过过滤器通过 ids 和 Collections 获取产品
- pagination - Blogger 值得注意的模板 - 缺少下一篇和上一篇按钮
- php - php 肥皂请求 colissimo
- php - 检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的 'DELETE FROM `teachers` WHERE user_id=' ' 附近使用正确的语法
- android - 如何在 android 浏览器而不是应用程序 webview 中打开 url?
- json - 来自嵌套 JSON 列表的架构
- css - 视差背景不覆盖溢出的内容
- apache-kafka - Kafka Stream:KTable物化
- arrays - Julia 中的通用数值数组
- sql - 基于字符串值过滤列时,T-SQL 透视格式化意外标识符