火花重复`DataFrame`处理工作?

伊万曼

我将Apache Spark(1.6)用于ML任务,并且我注意到Spark似乎在单个上重复处理DataFrame

我的代码看起来像这样:

val df1 = sqlContext.read.parquet("data.parquet")

val df2 = df1.withColumn("new", explode(expensiveTextProcessing($"text"))

println(df2.count)

... (no changes to df2)

println(df2.count)

因此,我知道我withColumn是一个转型,count是一个行动,因此,count这似乎是一个更长的过程。

但是,我注意到我第二次跑步和第一次跑步df2.count一样长df2.count另外,我正在使用的NLP工具调用expensiveTextProcessing过程中会引发一些警告,并且在两个count调用期间都会显示这些警告

expensiveTextProcessing每次我在其中使用数据时,Spark都会执行所有操作df2吗?

(有关更多上下文,您可以在这里看到我的实际Jupyter Notebook

FaigB

像RDD这样的DataFrame具有沿袭,该沿袭曾经用于在动作调用期间构建最终的DataFrame。当您致电计数时,所有执行程序的结果都将收集到驱动程序中。您可以检查Spark Web UI DAG表示形式和DataFrame的过渡以及进程的持续时间和本地化,以实现转换。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章