我有一个在 Cloudera VM 上运行的 SPARK 项目。在我的项目中,我从 parquet 文件加载数据,然后处理这些数据。一切正常,但问题是我需要在学校集群上运行这个项目,但在这部分代码中读取 Parquet 文件时遇到问题:
DataFrame schemaRDF = sqlContext.parquetFile("/var/tmp/graphs/sib200.parquet");
我收到以下错误:
Could not read footer: java.io.IOException: Could not read footer for file FileStatus{path=file:/var/tmp/graphs/sib200.parquet/_common_metadata; isDirectory=false; length=413; replication=0; blocksize=0; modification_time=0; access_time=0; owner=; group=; permission=rw-rw-rw-; isSymlink=false} at parquet.hadoop.ParquetFileReader.readAllFootersInParallel(ParquetFileReader.java:248) at org.apache.spark.sql.execution.datasources.parquet.ParquetRelation$$anonfun$28.apply(ParquetRelation.scala:750)
网上查了一下,好像是parquet版本的问题。
我想从您那里得到的是告诉我如何在计算机中找到已安装的 parquet 版本,以便检查两者是否具有相同的版本。或者另外,如果您知道此错误的确切解决方案也将是完美的!
最佳答案
我在尝试从 S3 读取 Parquet 文件时遇到了同样的问题。在我的例子中,问题是集群中的所有工作人员都无法使用所需的库。
有两种方法可以解决这个问题:
- 确保您在 spark-submit 命令上添加了依赖项,以便将其分发到整个集群
- 为集群中的每个工作人员添加对 SPARK_HOME 上/jars 目录的依赖项。
关于java - Apache Parquet 无法读取页脚 : java. io.IOException:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34814082/