SparkStreaming和Kafka的整合

spark自带的example中就有streaming结合kafka使用的案例:

$SPARK_HOME/examples/src/main/scala/org/apache/spark/examples/streaming/KafkaWordCount.scala

使用方法参见代码描述:

复制代码
Usage: KafkaWordCount <zkQuorum> <group> <topics> <numThreads>
<zkQuorum> is a list of one or more zookeeper servers that make quorum
<group> is the name of kafka consumer group
<topics> is a list of one or more kafka topics to consume from
<numThreads> is the number of threads the kafka consumer should use

Example:
`$ bin/run-example \
org.apache.spark.examples.streaming.KafkaWordCount zoo01,zoo02,zoo03 \
my-consumer-group topic1,topic2 1`
复制代码

 运行步骤:

1、启动ZK

zkServer.sh start

2、启动KAFKA SERVER

kafka-server-start.sh  $KAFKA_HOME/config/server.properties &  

3、运行Producer

run-example org.apache.spark.examples.streaming.KafkaWordCountProducer hadoop000:9092 test 3 5

参数描述:

  hadoop000:9092表示producer的地址和端口;

  test表示topic;

  3表示每秒发多少条消息;

  5表示每条消息中有几个单词;

4、运行Consumer

run-example org.apache.spark.examples.streaming.KafkaWordCount hadoop000:2181 test-consumer-group test 1

参数描述:

  hadoop000:2181表示zookeeper的监听地址;

  test-consumer-group表示consumer-group的名称,必须和$KAFKA_HOME/config/consumer.properties中的group.id的配置内容一致;

  test表示topic;

  1表示线程数;

注意观察consumer控制台的数据输出,类似于下面的输出:

复制代码
-------------------------------------------
Time: 1410483028000 ms
-------------------------------------------
(4,467)
(8,463)
(6,467)
(0,475)
(2,401)
(7,464)
(5,447)
(9,419)
(3,430)
(1,452)
复制代码

 

 

注意:

1、运行该案例的时候不需要启动spark;

2、我已经将$KAFKA_HOME/bin和$SPARK_HOME/bin添加到系统环境变量中,故在任意路径均可以执行运行步骤的脚本,如果没配置到环境变量,需要指定路径再执行脚本。

 请转载的同学表明转载地址, 谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark StreamingKafka整合案例: 1. 项目背景 本案例是一个实时数据处理项目,主要使用Spark StreamingKafka进行数据处理和传输。数据源为Kafka,数据处理和计算使用Spark Streaming,最终将结果输出到MySQL数据库中。 2. 技术架构 本案例的技术架构如下: 数据源:Kafka 数据处理和计算:Spark Streaming 数据存储:MySQL 3. 实现步骤 1)创建Kafka生产者,向Kafka中写入数据。 2)创建Spark Streaming应用程序,从Kafka中读取数据。 3)对读取到的数据进行处理和计算。 4)将计算结果输出到MySQL数据库中。 4. 代码示例 以下是本案例的代码示例: 1)Kafka生产者代码: from kafka import KafkaProducer producer = KafkaProducer(bootstrap_servers='localhost:9092') for i in range(10): producer.send('test', b'message %d' % i) producer.close() 2)Spark Streaming代码: from pyspark.streaming.kafka import KafkaUtils from pyspark.streaming import StreamingContext from pyspark import SparkContext, SparkConf conf = SparkConf().setAppName('KafkaSparkStreaming').setMaster('local[2]') sc = SparkContext(conf=conf) ssc = StreamingContext(sc, 5) kafkaParams = {"metadata.broker.list": "localhost:9092"} stream = KafkaUtils.createDirectStream(ssc, ["test"], kafkaParams) lines = stream.map(lambda x: x[1]) counts = lines.flatMap(lambda line: line.split(" ")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b) counts.pprint() ssc.start() ssc.awaitTermination() 3)MySQL代码: import mysql.connector cnx = mysql.connector.connect(user='root', password='password', host='localhost', database='test') cursor = cnx.cursor() add_data = ("INSERT INTO word_count (word, count) VALUES (%s, %s)") data = [('hello', 1), ('world', 2), ('spark', 3)] for d in data: cursor.execute(add_data, d) cnx.commit() cursor.close() cnx.close() 5. 总结 本案例使用Spark StreamingKafka进行实时数据处理和传输,并将结果输出到MySQL数据库中。通过本案例的实现,可以深入了解Spark StreamingKafka的使用方法和技术原理,为实际项目的开发提供参考和借鉴。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值