基本火花 - 导致程序运行缓慢的原因是什么?

时间:2017-04-15 18:23:41

标签: scala apache-spark pyspark

我是pyspark的新手。研究国情咨文地址数据集(SOU)(我在机器学习课程中给出了这个数据集)[*]。

我的问题简而言之:

我比较了pyspark对SOU的一些非常基本的操作与较大的随机数据集的使用情况。由于某种原因,随机数据集的处理速度要快得多。 我在这里想到spark如何运作,如何解释这种差异?在我处理导致处理速度慢的SOU数据集的方式上,我可能做错了什么?

所有代码和输出都在这个Jupyter笔记本中,我比较数据集以显示它们相似,但运行时间差异很大[**]。

Adde稍后:此处为DAG程序(版本略有不同)

的阐释

0)联合地址数据集的状态具有此形式

 +--------------------+--------------------+----+
 |           president|                text|year|
 +--------------------+--------------------+----+
 |        James Monroe| Fellow-Citizens ...|1821|
 |    William McKinley| To the Senate an...|1897|
 |Dwight D. Eisenhower|[Delivered in per...|1960|
 |     Calvin Coolidge|Since the close o...|1923|
 |       James Madison| Fellow-Citizens ...|1816|

其中text是演讲的内容。

1)我想出了整个数据集的单个列表(或字典)V[i](留下大约2000个独特的单词 - 既不太罕见也不常见)。

2)使用上面的字典,我将每个语句text[k]表示为整数数组vec[i]。其中vec[i]计算V[i]中单词text[k]的出现次数。

3)我想通过比较代表它们的向量之间的距离来比较语音。

4)为了找到所有演讲对之间的距离,我使用了cartesian类[***]的rdd方法。构造笛卡尔积可能需要很长时间才能处理(即使是在SOU数据集的一个小子样本上),但是当我在随机较大的rdd向量上运行相同的代码时却不会。

深入挖掘我试图了解造成这个问题的原因。我已经模仿了在由cartesian组成的一组随机向量上应用rdd的相同步骤。

[*]我发现似乎是类似的数据集here

[**]读取随机数据集6.07899999619 sec与SOU数据集24.2050001621 sec。取cartesian3.29400014877 sec vs 37.8359999657 sec

[***] Cartesian

0 个答案:

没有答案