nc模拟器输入语句在spark socket streaming中捕捉名字单词

导包

from pyspark import SparkContext
from pyspark.streaming import StreamingContext
import re

通过封装函数用正则对输入的语句进行处理

def find_name(line):
    # 在输入行中查找名字
    match = re.search(r'\bmy name is (\w+)\b', line, re.IGNORECASE)
    if match:
        return match.group(1)
    else:
        return ""

re.IGNORECASE是compile函数中的一个匹配模式,忽略大小写

ssc=StreamingContext(sc,4)

# 创建一个DStream,从nc模拟器接收数据
lines = ssc.socketTextStream('localhost',9999)

# 在DStream中查找名字
names = lines.map(find_name).filter(lambda x: x != "")

# 输出名字
names.pprint()

运行上面的代码,然后在终端输入nc -lk 9999 回车运行下面的代码的同时输入my name is lihua回车就可看见捕捉到的姓名单词

ssc.start()

c009ccf84b244263a7057e9ae6c1613d.png

 dda700a8023f4d98a5e42aa87c2f8e5c.png

同时,如果觉得上面封装函数比较复杂,可以采取以下方式,同样是正则处理

f9391e9fd06c488bbc3fafe2fd888f3e.png

 

 

 

 

 

 

 

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焦虑的water

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值