我正在使用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功能的管道(通过应用tokenizer
,stopWordRemover
,HashingTF
然后{ {1}})。
当我调用IDF
代码到达阶段pipline.fit(aggDF)
时(我可以在UI上看到),然后它被卡在那里,没有任何进展,没有任何错误,我等待很长一段时间没有任何进展,也没有关于UI的有用信息。
以下是我在UI中看到的一个示例(很长时间内没有任何变化):
答案 0 :(得分:2)
您是否指定了a maximum number of features in your HashingTF?
因为IDF必须处理的数据量将与HashingTF生成的功能数量成正比,并且很可能必须在磁盘上溢出非常大的数据,这会浪费时间。