Caching 是否会在每次操作时触发从外部源读取的数据帧?
在spark shell上,我使用以下代码读取csv文件Caching 是否会在每次操作时触发从外部源读取的数据帧?,caching,apache-spark,spark-csv,Caching,Apache Spark,Spark Csv,在spark shell上,我使用以下代码读取csv文件 val df = spark.read.format("org.apache.spark.csv").option("header", "true").option("mode", "DROPMALFORMED").csv("/opt/person.csv") //spark here is the spark session df.show() 假设显示10行。如果通过编辑在csv中添加新行,调用df.show()会再次显示新行吗?如
val df = spark.read.format("org.apache.spark.csv").option("header", "true").option("mode", "DROPMALFORMED").csv("/opt/person.csv") //spark here is the spark session
df.show()
假设显示10行。如果通过编辑在csv中添加新行,调用df.show()
会再次显示新行吗?如果是这样,是否意味着数据帧在每次操作时都从外部源(在本例中是csv文件)读取数据
请注意,我没有缓存数据帧,也没有使用spark会话重新创建数据帧TL;DR DataFrame与RDD没有什么不同。你可以期待同样的规则适用
有了这样简单的计划,答案是肯定的。它将读取每个节目的数据,但若动作不需要所有数据(如此处0),它将不会读取完整的文件
一般情况下(复杂执行计划)数据可以从随机文件中访问。每次操作后,spark都会忘记加载的数据和中间变量值 所以,如果您一个接一个地调用4个操作,它将从每次开始计算所有内容 原因很简单,spark通过构建DAG来工作,DAG允许它可视化从数据读取到操作的操作路径,然后执行它
这就是缓存和广播变量存在的原因。开发人员有责任知道和缓存,如果他们知道他们将重复使用该数据或数据帧N次。我没有听你的上一句话。如果内存可用(即使没有调用cache()或persist()),也不会尝试将rdd保留在内存中?正确的文档链接将如何详细解释此行为?