1

我的工作是接收一个巨大的数据集并将其与另一个数据集连接起来。第一次运行时,它花了很长时间,SparkFileScan parquet在读取数据集时执行了 a,但在未来的作业中,查询计划显示Scan ExistingRDD并且构建需要几分钟。

Spark 为什么以及如何能够扫描现有的 RDD?它会退回到扫描支持数据集的 parquet 文件(并因此恢复到更差的性能)吗?

4

1 回答 1

0

在 Foundry 中有两种常见情况,您会在其中看到:

  1. 您正在使用通过手动定义的 DataFramecreateDataFrame
  2. 您正在使用没有任何更改的输入运行增量转换,因此您使用的是 Transforms 为您创建的空合成 DataFrame(1 的特殊情况。)

如果我们遵循 Spark 代码,我们会看到调用的定义,即Scan ExistingRDD,这反过来又调用RDDScanExec,它是InternalRows的映射器(驱动程序持有并合成到 DataFrame 中的文字值的表示)。

于 2022-02-22T19:39:53.557 回答