Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 至于;“迭代算法”;转换为RDD然后再转换回数据帧有什么好处_Apache Spark_Apache Spark Sql_Rdd_Catalyst Optimizer - Fatal编程技术网

Apache spark 至于;“迭代算法”;转换为RDD然后再转换回数据帧有什么好处

Apache spark 至于;“迭代算法”;转换为RDD然后再转换回数据帧有什么好处,apache-spark,apache-spark-sql,rdd,catalyst-optimizer,Apache Spark,Apache Spark Sql,Rdd,Catalyst Optimizer,我正在阅读《高性能火花》,作者提出以下主张: 虽然Catalyst优化器非常强大,但它目前遇到的挑战之一是非常大的查询计划。这些查询计划往往是迭代算法的结果,如图算法或机器学习算法。一个简单的解决方法是在每次迭代结束时将数据转换为RDD并返回到DataFrame/Dataset,如示例3-58所示 示例3-58标记为“通过RDD往返切割查询计划”,如下所示: val rdd = df.rdd rdd.cache() sqlCtx.createDataFrame(rdd. df.schema)

我正在阅读《高性能火花》,作者提出以下主张:

虽然Catalyst优化器非常强大,但它目前遇到的挑战之一是非常大的查询计划。这些查询计划往往是迭代算法的结果,如图算法或机器学习算法。一个简单的解决方法是在每次迭代结束时将数据转换为RDD并返回到DataFrame/Dataset,如示例3-58所示

示例3-58标记为“通过RDD往返切割查询计划”,如下所示:

val rdd = df.rdd
rdd.cache()
sqlCtx.createDataFrame(rdd. df.schema)
有人知道这一解决方案之所以必要的根本原因吗

为供参考,已就此问题提交了一份缺陷报告,可通过以下链接获取:


似乎没有解决办法,但维护人员已经解决了这个问题,似乎不认为他们需要解决它。

据我所知,沿袭在迭代算法中不断增长,即

步骤1:读取DF1、DF2

步骤2:根据DF2值更新DF1

步骤3:读取DF3

步骤4:根据DF3值更新DF1

……等等

在这种情况下,DF1沿袭将继续增长,除非使用DF1.rdd对其进行截断,否则它将在大约20次迭代后使驱动程序崩溃