Apache spark 是';加载';行动或转变中的命令?

Apache spark 是';加载';行动或转变中的命令?,apache-spark,pyspark,Apache Spark,Pyspark,我的理解是,load是一种转换,只有在调用某个操作时才会执行。但是,在执行load语句时,它似乎是Spark UI下的一个操作 编辑: 从评论/回答中,我推断load可能是也可能不是一种转变,但不是绝对是一种伟大且可以理解的行为 如果不是动作,为什么要创建DAG? 它只为load语句创建DAG,而不只是为INTERSTAGECODEGEN(位于SQL选项卡中)创建DAG。 请参见下图: 具体来说,根据您的评论: 加载不起任何作用。它只是sqlContext.read或 spark.read.fo

我的理解是,load是一种转换,只有在调用某个操作时才会执行。但是,在执行load语句时,它似乎是Spark UI下的一个操作

编辑:

从评论/回答中,我推断load可能是也可能不是一种转变,但不是绝对是一种伟大且可以理解的行为

如果不是动作,为什么要创建DAG? 它只为load语句创建DAG,而不只是为INTERSTAGECODEGEN(位于SQL选项卡中)创建DAG。 请参见下图:

具体来说,根据您的评论:

加载不起任何作用。它只是sqlContext.read或 spark.read.format API作为参数,可以间接设置或 直接读。读取允许指定数据格式


正如他们所说,DF或底层RDD的评估是惰性的。

加载既不是操作也不是转换,它是DataFrameReader类的一种方法 它描述了如何从外部数据源加载数据

DataFrameReader的所有方法仅描述加载数据的过程,不会触发Spark作业(直到调用操作)

这是jaceklaskowski提到的,请阅读

您还可以从这里的databricks中引用转换和操作API列表
任何地方都没有提到加载是一种转换或操作

它是一种转换谢谢您的回复。我从共享链接中看到,这是一个转换,需要一些时间来执行,因为它执行元数据检查和所有操作。我的另一个问题仍然没有答案。为什么一个简单的load语句正在创建一个DAG,这是不应该发生的。UI下的事情只是一个完整的TAGECODEGEN,而不是一个动作。你的问题与你的评论没有那么具体。我承认这有点模糊。请看链接的批准答案,它也很模糊。你应该问一个新问题。
df = spark.read.format('csv').load('...')