首先需要的是环境,我安装的是spark2…1,kafka0-10,hadoop2.7,scala2.11,因为spark是Scala语言写的,所以这个必须的安装,大数据传输存储需要用到Hadoop,HDFS,所以Hadoop需要安装,streaming接受流数据源有两种大的方式,一种是文件和套接字,直接读取文件和通过套接字传输,另一种是高级API形式,可以通过额外的实用程序类获得诸如Kafka,Flume,Kinesis等,这里用kafka。可参见官方文档(在此建议kafka安装版本不要太高,太高会有很多报错),环境安装好之后还需要一个下载一个依赖包,spark-stream-kafka-0.10_2.11-2.1.0.jar,下载地址,这里2.11是Scala版本,2.1.0是spark版本,0-10是kafka版本,下载的时候要看清楚自己的版本,然后下载编译包spark-streaming-kafka-0-10-assembly_2.11-2.1.1,选择中央地址,下载地址,下载完之后两个都放到spark/jars目录下,这样依赖与环境就都配置好了。
启动Hadoop,HDFS,在根目录下输入,等待逐步启动
start-all.sh
之后启动kafka,先启动zookeeper,进入kafka安装目录输入
bin/zookeeper-server-start.sh config/zookeeper.properties
启动kafka
bin/kafka-server-start.sh config/server.properties
创建一个test主题
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test
查看创建的主题
kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
用python编码流数据处理代码,这里用两种方式
第一种套接字形式(官方例子,此方式不必启动kafka服务)
import sys
from pyspark import SparkContext