我有一个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-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,并且工作正常