sparkstreaming 消费kafka数据

  1. Spark环境准备:
    1. Java
      1. Jdk1.8

spark依赖java,首先电脑中必须安装java。

地址:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

根据系统下载对应的jdk,下载后双击exe文件进行安装,可选择安装位置。

环境变量配置

依次点击我的电脑 ->属性->高级系统设置->环境变量,在系统变量选项卡中,新建一个系统变量,如下,变量名为JAVA_HOME,变量值为本地安装java的路径。

添加好JAVA_HOME后,需要为Path变量增加值,选择Path变量(同样在系统变量中),点击编辑,弹出如下弹窗,新建两个值,分别为%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin。

添加好后,确定、保存。

测试

环境变量配置好后,测试java是否安装成功,win+R打开运行对话框,输入cmd命令进入命令行窗口,输入java -version查看java版本,有输出则说明java安装成功。

2 scala 安装

下载

spark是由scala语言编写的,需要安装scala。

地址:https://www.scala-lang.org/download/

根据系统下载对应的版本,进行安装,安装位置可自行选择。

环境变量配置

同样,在系统变量的Path中,增加一个值,为scala的安装路径。

测试

同样,打开命令行窗口,输入scala,出现如下界面表示安装成功。

3 hadoop安装

下载

地址:http://hadoop.apache.org/releases.html

下载,安装到本地。

需要注意的是hadoop的安装路径中不要有空格,例如不要放在Program Files文件夹下。

环境变量配置

新增HADOOP_HOME系统变量,值为本地hadoop安装路径。

增加Path系统变量的值,为%HADOOP_HOME%\bin

4 spark安装

下载

下载地址:http://spark.apache.org/downloads.html

下载,然后本地安装。

需要注意的是spark版本需要和hadoop版本对应,如界面所示的spark 3.0.0对应hadoop 2.7。

环境变量配置

新增SPARK_HOME系统变量,值为本地spark安装路径。

增加Path系统变量的值,为%SPARK_HOME%\bin。

测试

在命令行窗口,输入spark-shell,出现如下界面,表示spark安装成功。

spark window单机版安装成功!单机版可以用来学习spark的基础使用,python用户可以用pyspark模块使用spark,R用于可以用SparkR包使用spark。

https://blog.csdn.net/jhr112/article/details/115206629

Kafka

  1. 安装dk

2 下载Kafka

下载地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/2.1.0/kafka_2.11-2.1.0.tgz

3 解压并配置Kafka

将kafka_2.11-2.1.0.tgz解压到D:\kafka_2.11-2.1.0文件夹。(注:文件夹不能带空格,否则zookeeper启动报错)

bin目录:启动,停止等命令。

config目录: 配置文件

libs目录: 类库

4 启动和停止kafka

4.1 配置

注:在本实验中我将所有的localhost更换为127.0.0.1

4.1.1 zookeeper.properties

#dataDir与dataLogDir需要指定一个目录(需要创建D:/zookeeper/data与D:/zookeeper/log目录),否则启动kafka会报java.nio.file.AccessDeniedException错误。

dataDir=D:/zookeeper/data

dataLogDir=D:/zookeeper/log

clientPort=2181

maxClientCnxns=0

4.2 启动kafka

进入bin\windows目录下,按先后顺序启动

启动zookeeper,端口2181

zookeeper-server-start.bat ../../config/zookeeper.properties

启动kafka,端口9092

kafka-server-start.bat ../../config/server.properties

Kafka Connect 启动:(此处不需要,用于连接数据库)

connect-standalone.bat ../../config/connect-standalone.properties ../../config/mysql.properties

zookeeper启动

kafka启动成功

4.3 停止kafka

进入bin\windows目录下,按先后顺序启动

kafka-server-stop.bat

zookeeper-server-stop.bat

4.4 topic创建

进入bin\windows目录下

方法一:自动创建

kafka-console-producer.bat --broker-list 127.0.0.1:9092 --topic test

方法二:

创建一个拥有3个副本,1个分区的topic

kafka-topics.bat --create --zookeeper 127.0.0.1:2181 --replication-factor 1 -partitions 3 --topic test1

4.5 topic删除

进入bin\windows目录下

kafka-topics.bat --delete --zookeeper 127.0.0.1:2181 --topic test

4.6 查看topic

进入bin\windows目录下

#查看topic列表

kafka-topics.bat --zookeeper 127.0.0.1:2181 --list

#查看topic名称为test对应的具体信息​

kafka-topics.bat --describe --zookeeper 127.0.0.1:2181 --topic test

4.7 启动生产者

kafka-console-producer.bat --broker-list 127.0.0.1:9092 --topic test

4.8 启动消费者

kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning

5 可视化工具kafka-manager

下载地址:

https://github.com/yahoo/kafka-manager/releases  需要编译

编译后:https://pan.baidu.com/s/1qYifoa4 密码:el4o(来源https://www.cnblogs.com/dadonggg/p/8205302.html)

配置conf/application.conf文件

manager.zkhosts="127.0.0.1:2181"

启动: 启动前需要启动zookeeper与kafka

进入bin目录,默认端口9000

输入命令:kafka-manager

成功后访问地址:localhost:9000

创建主题test,关联上面zookeeper 127.0.0.1:2181

点击active下新建的主题

点击圈中topitcs对应数字。

topitcs列表详情

https://blog.csdn.net/qq_34553637/article/details/86672925

脚本

from __future__ import print_function

from pyspark import SparkContext

from pyspark.streaming import StreamingContext

from pyspark.streaming.kafka import KafkaUtils

if __name__ == "__main__":

    sc = SparkContext(appName="streamingkafka")

    sc.setLogLevel("WARN") # 减少shell打印日志

    ssc = StreamingContext(sc, 5) # 5秒的计算窗口

    brokers='127.0.0.1:9092'

    topic = 'test1'

    # 使用streaming使用直连模式消费kafka

    kafka_streaming_rdd = KafkaUtils.createDirectStream(ssc, [topic], {"metadata.broker.list": brokers})

    lines_rdd = kafka_streaming_rdd.map(lambda x: x[1])

    counts = lines_rdd.flatMap(lambda line: line.split(" ")) \

        .map(lambda word: (word, 1)) \

        .reduceByKey(lambda a, b: a+b)

    # workcount结果打印到当前shell    

    counts.pprint()

    ssc.start()

    ssc.awaitTermination()

   

https://blog.csdn.net/wulantian/article/details/69525601

spark-submit --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.4 Kafka_spark.py

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值