我的工作是接收一个巨大的数据集并将其与另一个数据集连接起来。第一次运行时,它花了很长时间,SparkFileScan parquet
在读取数据集时执行了 a,但在未来的作业中,查询计划显示Scan ExistingRDD
并且构建需要几分钟。
Spark 为什么以及如何能够扫描现有的 RDD?它会退回到扫描支持数据集的 parquet 文件(并因此恢复到更差的性能)吗?
我的工作是接收一个巨大的数据集并将其与另一个数据集连接起来。第一次运行时,它花了很长时间,SparkFileScan parquet
在读取数据集时执行了 a,但在未来的作业中,查询计划显示Scan ExistingRDD
并且构建需要几分钟。
Spark 为什么以及如何能够扫描现有的 RDD?它会退回到扫描支持数据集的 parquet 文件(并因此恢复到更差的性能)吗?
在 Foundry 中有两种常见情况,您会在其中看到:
createDataFrame
如果我们遵循 Spark 代码,我们会看到调用的定义,即Scan ExistingRDD,这反过来又调用RDDScanExec,它是InternalRows的映射器(驱动程序持有并合成到 DataFrame 中的文字值的表示)。