sparkstreaming线程数小于2时出错!

在运行Spark Streaming程序时遇到错误,提示Block只复制到0个节点。问题在于本地运行时使用了'local'或'local[1]',这导致只有一个线程,无法同时接收和处理数据。解决方案是使用'local[n]',确保n大于接收器数量。在集群上运行时,分配给应用的内核数也应大于接收器数量,以避免接收数据但无法处理的情况。
摘要由CSDN通过智能技术生成

[Stage 0:>                  (0 + 1) / 1][Stage 10:>                 (0 + 1) / 1]20/02/11 11:32:55 WARN RandomBlockReplicationPolicy: Expecting 1 replicas with only 0 peer/s.
20/02/11 11:32:55 WARN BlockManager: Block input-0-1581391975600 replicated to only 0 peer(s) instead of 1 peers

sc = SparkContext("local[2]", "Stream Socket Test")
ssc = StreamingContext(sc, 5)

lines = ssc.socketTextStream("home.redblue-ai.com", 9999)

提交的时候用的 ./bin/spark-submit test.py localhost 9999 , 当然,首先需要运行 Netcat(一个在大多数类 Unix 系统中的小工具)作为我们使用的数据服务器(用来模拟数据流)。

一直出现如上的错误,后来修改了虚拟机的内核为2,问题解决。

继续修改提交方式 ./bin/spark-submit --master local[1] test.py localhost 9999 ,结果又出现如上的错误。

去看官方文档发现了这个严重的问题,sparkstreaming不能少于2个线程,至少要一个接收一个处理:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值