All*_*Han 5 apache-spark rdd apache-spark-sql catalyst-optimizer
我正在阅读High Performance Spark,作者做出以下声明:
虽然 Catalyst 优化器非常强大,但它目前遇到挑战的情况之一是非常大的查询计划。这些查询计划往往是迭代算法的结果,例如图算法或机器学习算法。一个简单的解决方法是将数据转换为 RDD,并在每次迭代结束时转换回 DataFrame/Dataset,如例 3-58 所示。
示例 3-58 被标记为“通过 RDD 进行往返以削减查询计划”,并复制如下:
val rdd = df.rdd
rdd.cache()
sqlCtx.createDataFrame(rdd. df.schema)
Run Code Online (Sandbox Code Playgroud)
有谁知道需要此解决方法的根本原因是什么?
作为参考,已针对此问题提交了错误报告,可通过以下链接获取: https ://issues.apache.org/jira/browse/SPARK-13346
似乎没有解决办法,但维护者已经解决了这个问题,并且似乎不认为他们需要解决它。
小智 1
根据我的理解,迭代算法的谱系不断增长,即
步骤1:读取DF1、DF2
步骤2:根据DF2值更新DF1
步骤3:读取DF3
步骤4:根据DF3值更新DF1
..ETC..
在这种情况下,DF1 谱系不断增长,除非使用 DF1.rdd 截断它,否则它将在 20 次左右的迭代后使驱动程序崩溃。
| 归档时间: |
|
| 查看次数: |
750 次 |
| 最近记录: |