df.show()打印空结果,而在hdfs中它不是空的

a8jjtwal  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(351)

我有一个pyspark应用程序,它被提交到具有多个节点的yarn,它还从hdfs读取parquet
在我的代码中,我有一个直接从hdfs读取的Dataframe:

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

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

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

但是当我手动转到hdfs路径时,数据不是空的。
我试过什么?
一开始我以为我的执行器和驱动程序可能用了很少的内核和内存,所以我把它们翻了一番,什么都没变。
2-然后我认为这个路径可能是错误的,所以我给了它一个错误的hdfs路径,它抛出了一个错误,这个路径不存在
我在想什么?
我认为这可能与司机和遗嘱执行人有关
我可能和Yarn有关吗
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路径。

ix0qys7i

ix0qys7i1#

所以问题出在我提供的jar文件上
hadoop的版本是2.7.2,我把它改成了3.2.0,它运行得很好

相关问题