Spark-Streaming(三)
一. kafka和flume的整合
任务需求一:利用flume监控某目录中新生成的文件,将监控到的变更数据发送给kafka,kafka将收到的数据打印到控制台
1. 在flume/conf/目录下添加flume-kafka.conf文件
配置文件如下
2. 启动flume和kafka消费者
3. 传入数据
查看flume和kafka控制台查看结果
任务需求2:Kafka生产者生成的数据利用Flume进行采集,将采集到的数据打印到Flume的控制台上。
1.在flume/conf/目录下配置kafka.flume.conf文件
2. 启动kafka生产者生产数据
启动flume采集kafka生产的数据
可以看到flume已经成功采集kafka生产者的数据
二. DStream转换
DStream 上的操作与 RDD 的类似,分为 Transformations(转换)和 Output Operations(输出)两种,此外转换操作中还有一些比较特殊的原语
无状态转化操作
无状态转化操作就是把简单的 RDD 转化操作应用到每个批次上,也就是转化 DStream 中的每一个 RDD。部分无状态转化操作列在了下表中。
注意,针对键值对的 DStream 转化操作(比如reduceByKey())要添加
import StreamingContext._才能在 Scala 中使用。
Transform
Transform 允许 DStream 上执行任意的 RDD-to-RDD 函数。即使这些函数并没有在 DStream的 API 中暴露出来,通过该函数可以方便的扩展 Spark API。该函数每一批次调度一次。其实也就是对 DStream 中的 RDD 应用转换。
案例演示
1. 编写代码
往9999端口传输数据
2. 运行代码打印9999端口数据
join
两个流之间的 join 需要两个流的批次大小一致,这样才能做到同时触发计算。计算过程就是对当前批次的两个流中各自的 RDD 进行 join,与两个 RDD 的 join 效果相同。
案例演示
1 编写代码运行代码
往9999和8888传输数据
运行结果