在Pyspark中,如何检查文本文件中的连续单词是否以相同的字母表开头



我在一个文件中有以下文本:

Horrid Henry’s hound hunts in the massive Murree mountains. While silly stupid Samuel’s dark dreadful dragon likes to hunt in
skies.
Horrid Henry’s hound and Samuel’s dreadful dragon Dany are fast friends and like to hunt and play together. They call themselves
fantastic fanciful foursome.

我加载这个文件并按如下方式flatMap它:

lines=sc.textFile("BigData test.txt")
RddWords=lines.flatMap(lambda line: line.split(" "))

这会将其转换为字符串列表(每个单词都是一个字符串(。我想检查三个连续的单词是否从同一个字母表开始。预期输出如下:

H => 3
M=> 1
S => 1
D => 1
F => 1 

以"H"开头的连续单词出现3次。类似地,以"M"开头的连续单词只出现一次。下面显示的是这些连续单词的详细出现情况。

Horrid Henry’s hound =>2
Henry’s hound hunts => 1
massive Murree mountains =>1
silly stupid Samuel’s =>1
dreadful dragon Dany=>1
fantastic fanciful foursome =>1

我可以编写python函数,它只需检查字符串中的三个连续单词。但我想不出如何在名为RddWords的并行化Rdd上实现该函数。如果我写一个映射函数,它将在RddRddWords中的每个x上单独实现。我将如何处理连续的单词?有人能给我指引一下吗?非常感谢

解决方案1

您需要将每条线都作为滚动三元图:

(word0, word1, word2)
(word1, word2, word3)
...

然后映射提取所需信息的函数CCD_ 4。

解决方案2

使用数据帧API并应用长度为3的滚动窗口函数

最新更新