Spark-Streaming 对接 Kafka

在官网下载,对应 spark 和 scala 版本的 jar 包
https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-kafka-0-8-assembly

我在 spark 的目录下 创建了一个 external_jars 的目录,并把这个 jar 包放到这个目录下

  • 启动 spark
  • 启动 zookeeper
  • 启动 kafka

jps 查看进程如下
在这里插入图片描述
在 kafka 的 bin 目录下,创建名为 rs 的 topic,注意,最好不要用 localhost

bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 1 --topic rs

查看创建的 topic

bin/kafka-topics.sh --list --zookeeper master:2181

启动生产者进程

bin/kafka-console-producer.sh --broker-list master:9092 --topic rs

启动消费者进程

bin/kafka-console-consumer.sh --bootstrap-server master:9092 --topic rs --from-beginning

编写 produer.py,不断产生消息

from kafka import KafkaProducer
import time

#创建KafkaProducer,连接broker
producer = KafkaProducer(bootstrap_servers='master:9092')

#每隔一段时间发送一端字符串数据到broker
def send_data():
    for i in range(60):
        producer.send('rs',b"hello,kafka,spark,streaming,kafka")
        time.sleep(0.1)

send_data()

编写 consumer.py,用 spark-streaming 从 Kafka 中消费信息

from pyspark.streaming import StreamingContext
from pyspark.streaming.kafka import KafkaUtils
from pyspark.sql.session import SparkSession

topic="rs"

spark = SparkSession.builder.master("local[2]").getOrCreate()
sc = spark.sparkContext
ssc = StreamingContext(sc,3)

#创建direct连接,指定要连接的topic和broker地址
ks = KafkaUtils.createDirectStream(ssc,[topic],{"metadata.broker.list":"master:9092"})
#(None,内容)
ks.pprint()

#以下代码每操作一次,就打印输出一次
lines = ks.map(lambda x:x[1])
lines.pprint()

words = lines.flatMap(lambda line:line.split(","))
words.pprint()

pairs = words.map(lambda word:(word,1))
pairs.pprint()

counts = pairs.reduceByKey(lambda x,y:x+y)
counts.pprint()

ssc.start()
#等待计算结束
ssc.awaitTermination()

此时直接启动程序 python consumer.py 会报错
在这里插入图片描述

Spark Streaming's Kafka libraries not found in class path. Try one of the following.

必须用 spark-submit 提交 python 程序,并上传 jar 包(最开始下载的那个 jar 包,我下载的 jar 包名字是 spark-streaming-kafka-0-8-assembly_2.11-2.4.4.jar),注意 jar 包的路径要对

spark-submit --jars /usr/local/src/spark-2.4.4-bin-hadoop2.6/external_jars/spark-streaming-kafka-0-8-assembly_2.11-2.4.4.jar consumer.py

这个成功启动只会会输出很多日志信息的

然后在启动 productor.py 就 ok 了

python productor.py

查看日志信息
在这里插入图片描述
在这里插入图片描述对接成功!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值