Spark:IDF的TreeAgregate需要很长时间

时间:2017-01-25 14:20:14

标签: apache-spark

我正在使用Spark 1.6.1,我有一个DataFrame如下:

+-----------+---------------------+-------------------------------+
|ID         |dateTime             |title                          |
+-----------+---------------------+-------------------------------+
|809907895  |2017-01-21 23:00:01.0|                               |
|1889481973 |2017-01-21 23:00:06.0|Man charged with murder of ... |
|979847722  |2017-01-21 23:00:09.0|Munster cruise to home Cham... |
|18894819734|2017-01-21 23:00:11.0|Man charged with murder of ... |
|17508023137|2017-01-21 23:00:15.0|Emily Ratajkowski hits the ... |
|10321187627|2017-01-21 23:00:17.0|Gardai urge public to remai... |
|979847722  |2017-01-21 23:00:19.0|Sport                          |
|19338946129|2017-01-21 23:00:33.0|                               |
|979847722  |2017-01-21 23:00:35.0|Rassie Erasmus reveals the ... |
|1836742863 |2017-01-21 23:00:49.0|NAMA sold flats which could... |
+-----------+---------------------+-------------------------------+

我正在进行以下操作:

val aggDF = df.groupBy($"ID")
              .agg(concat_ws(" ", collect_list($"title")) as "titlesText")

然后在aggDF DataFrame上,我拟合了一个从titlesText列中提取TFIDF功能的管道(通过应用tokenizerstopWordRemoverHashingTF然后{ {1}})。

当我调用IDF代码到达阶段pipline.fit(aggDF)时(我可以在UI上看到),然后它被卡在那里,没有任何进展,没有任何错误,我等待很长一段时间没有任何进展,也没有关于UI的有用信息。

以下是我在UI中看到的一个示例(很长时间内没有任何变化):

enter image description here

  • 可能的原因是什么?
  • 如何跟踪和调试此类问题?
  • 有没有其他方法可以提取相同的功能?

1 个答案:

答案 0 :(得分:2)

您是否指定了a maximum number of features in your HashingTF

因为IDF必须处理的数据量将与HashingTF生成的功能数量成正比,并且很可能必须在磁盘上溢出非常大的数据,这会浪费时间。