【问题标题】:Why does Spark read data even no actions are called?为什么即使没有调用任何动作,Spark 也会读取数据?
【发布时间】:2021-12-01 14:34:15
【问题描述】:

我在使用 spark.read.json 时对 Spark 上的延迟加载感到困惑。

我有以下代码:

df_location_user_profile = [
    f"hdfs://hdfs_cluster:8020/data/*/*"
]
df_json = spark.read.json(json_data_files)

虽然 HDFS 上的 JSON 数据按年和月(年=yyyy,月=mm)分区,但我想检索该数据集的所有数据。 对于这个代码块,我只从定义的位置读取数据,没有执行任何操作。但我在 Spark UI 上发现下一阶段的输入数据非常庞大。

据我了解,Spark 的延迟加载方式在调用操作之前不会读取数据。那么这让我很困惑。

之后,我调用count() 操作,然后创建新阶段,Spark 再次读取数据。

我的问题是,为什么 Spark 在没有调用任何操作时(在第一份工作,阶段)读取数据?我该如何优化它?

【问题讨论】:

    标签: json apache-spark pyspark apache-spark-sql


    【解决方案1】:

    由于未提供模式,它正在评估模式。也就是推断模式。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-18
    • 2011-06-14
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多