spark笔记之DStream操作实战

5.1 SparkStreaming接受socket数据,实现单词计数WordCount
5.1.1 架构图

5.1.2 实现流程

(1)安装并启动生产者

首先在linux服务器上用YUM安装nc工具,nc命令是netcat命令的简称,它是用来设置路由器。我们可以利用它向某个端口发送数据。

yum install -y nc

(2)通过netcat工具向指定的端口发送数据

         nc -lk 9999

(3)编写Spark Streaming程序

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

package cn.test.spark[/align]

import org.apache.spark.streaming.dstream.{ DStream, ReceiverInputDStream}

import org.apache.spark.streaming.{ Seconds, StreamingContext}

import org.apache.spark.{ SparkConf, SparkContext}

 

/**

  * sparkStreming流式处理接受socket数据,实现单词统计

  */

object  SparkStreamingTCP {

 

  def main(args: Array[String]): Unit = {

    //配置sparkConf参数

    val sparkConf: SparkConf = new SparkConf().setAppName("SparkStreamingTCP").setMaster("local[2]")

    //构建sparkContext对象

    val sc: SparkContext = new SparkContext(sparkConf)

    //设置日志输出级别

    sc.setLogLevel("WARN")

    //构建StreamingContext对象,每个批处理的时间间隔

    val scc: StreamingContext = new StreamingContext(sc,Seconds(5))

    //注册一个监听的IP地址和端口  用来收集数据

    val lines: ReceiverInputDStream[String] = scc.socketTextStream("192.168.200.160",9999)

    //切分每一行记录

    val words: DStream[String] = lines.flatMap(_.split(" "))

    //每个单词记为1

    val wordAndOne: DStream[(String, Int)] = words.map((_,1))

    //分组聚合

    val result: DStream[(String, Int)] = wordAndOne.reduceByKey(_+_)

    //打印数据

    result.print()

    scc.start()

    scc.awaitTermination()

  }

}

由于使用的是本地模式"local[2]"所以可以直接在本地运行该程序

注意:要指定并行度,如在本地运行设置setMaster("local[2]"),相当于启动两个线程,一个给receiver,一个给computer。如果是在集群中运行,必须要求集群中可用core数大于1。

5.1.3 执行查看效果

(1)先执行nc -lk 9999

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值