【问题标题】:df.show() prints empty result while in hdfs it is not emptydf.show() 打印空结果,而在 hdfs 中它不为空
【发布时间】:2020-06-07 13:07:16
【问题描述】:

我有一个 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 路径。

【问题讨论】:

  • 可能是错误的架构?
  • 不,这也是正确的
  • 只是为了确认您是否可以在不提供架构的情况下运行相同的代码并将 inferschema 设置为 true 并查看 df.show 是否提供输出。
  • 它没有输出:(

标签: apache-spark hadoop pyspark hdfs hadoop-yarn


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2017-03-20
    相关资源
    最近更新 更多