我有一个pyspark应用程序,它被提交到具有多个节点的yarn,它还从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提交时提供的配置
当前配置:
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路径。
所以问题出在我提供的jar文件上
hadoop的版本是2.7.2,我把它改成了3.2.0,它运行得很好