df.show() 打印空结果,而在 hdfs 中它不为空
df.show() prints empty result while in hdfs it is not empty
我有一个 pyspark 应用程序,它提交给具有多个节点的 yarn,它还从 hdfs 读取 parquet
在我的代码中,我有一个直接从 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 路径。
所以问题出在我提供的 jar 文件上
hadoop 版本是 2.7.2,我将其更改为 3.2.0,它工作正常
我有一个 pyspark 应用程序,它提交给具有多个节点的 yarn,它还从 hdfs 读取 parquet
在我的代码中,我有一个直接从 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 路径。
所以问题出在我提供的 jar 文件上
hadoop 版本是 2.7.2,我将其更改为 3.2.0,它工作正常