首页 > 解决方案 > df.show() 打印空结果,而在 hdfs 中它不为空

问题描述

我有一个 pyspark 应用程序,它提交给具有多个节点的纱线,它还从 hdfs 读取镶木地板

在我的代码中,我有一个直接从 hdfs 读取的数据帧:

df = self.spark.read.schema(self.schema).parquet("hdfs://path/to/file")

当我df.show(n=2)在上面的代码之后直接在我的代码中使用时,它输出:

+---------+--------------+-------+----+
|aaaaaaaaa|bbbbbbbbbbbbbb|ccccccc|dddd|
+---------+--------------+-------+----+
+---------+--------------+-------+----+

但是当我手动转到 hdfs 路径时,数据不为空。

我试过什么?

1-起初我认为我可能为我的执行程序和驱动程序使用了很少的内核和内存,所以我将它们加倍并且没有任何改变。

2-然后我认为路径可能是错误的,所以我给了它一个错误的hdfs路径,它抛出了这个路径不存在的错误

我在假设什么?

1-我认为这可能与驱动程序和执行程序有关

2-我可能与纱线有关

3- 使用 spark-submit 时提供的配置

当前配置:

spark-submit \
    --master yarn \
    --queue my_queue_name \
    --deploy-mode cluster \
    --jars some_jars \
    --conf spark.yarn.dist.files some_files \
    --conf spark.sql.catalogImplementation=in-memory \
    --properties-file some_zip_file \
    --py-files some_py_files \
    main.py

我确定

数据不为空。另一个运行良好的项目中提供了相同的 hdfs 路径。

标签: apache-sparkhadooppysparkhdfshadoop-yarn

解决方案


所以问题出在我提供的 jar 文件上

hadoop 版本是 2.7.2,我将其更改为 3.2.0,它工作正常


推荐阅读