Spark需要很长时间才能返回RDD的计数

时间:2017-11-18 06:11:19

标签: scala apache-spark dataframe

我有一个在查询上执行的数据框。数据大小可能超过1GB。

使用spark sql后,请考虑我有一个数据帧df。在此之后,

我将数据集过滤成2个数据帧, 值小于540的一个,即filteredFeaturesBefore,另一个值介于540和640之间,即filteredFeaturesAfter

在此之后,我结合了上面提到的2个数据帧,即使用内连接

的combinedFeatures
val combinedFeatures = sqlContext.sql("""select * from filteredFeaturesBefore inner join filteredFeaturesAfter on  filteredFeaturesBefore.ID = filteredFeaturesAfter.ID """)

稍后我创建了一个LabeledPoint数据集,将数据传递到机器学习模型中。

val combinedRddFeatures = combinedFeatures.rdd

combinedRddFeatures.map(event => LabeledPoint(parseDouble(event(0) + ""), Vectors.dense(parseDouble(event(1) + ""),
        parseDouble(event(2) + ""), parseDouble(event(3) + ""), parseDouble(event(4) + ""))))

如果我执行,则finalSamples.count()spark正在执行,并且很长时间没有返回任何内容。我执行了6个小时的程序,仍然没有从火花返回结果。我不得不停止执行,因为笔记本电脑几乎很慢并且没有正确响应。

我不知道这是因为我的笔记本电脑处理器速度还是火花挂起。

我正在使用具有1.8Ghz处理器的macBook air 2017。

你能告诉我为什么会发生这种情况,因为我是新来的。

此外,是否有任何解决方法。我可以迭代两个数据帧并提取labelelPoints数据结构,而不是将数据拆分为2个数据帧吗?如果是的话,你能否建议我这样做的方法。

0 个答案:

没有答案