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

2024-06-25 06:35:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我的文件中有以下文本:

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上实现该函数。如果我写一个map函数,它将在RddRddWords中的每个x上分别实现。我将如何处理连续单词?有人能给我指点路吗? 非常感谢


Tags: and文件函数字符串in单词samuelhound
1条回答
网友
1楼 · 发布于 2024-06-25 06:35:21

解决方案1

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

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

然后映射一个函数f,该函数提取您想要的信息

解决方案2

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

相关问题 更多 >