Spark Streaming 简单示例(WordCount)

本文介绍如何使用Spark Streaming实现WordCount,通过设置Spark配置、创建StreamingContext,并从socket接收数据,进行flatMap、map和reduceByKey操作,最终打印出每个单词的计数结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Pom.xml 加入以下依赖:

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>${spark.version}</version>
    <scope>provided</scope>
</dependency>

 

2.代码示例

package com.luomk
import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Seconds, StreamingContext}

/**
  * @author luomingkui
  * @date 2018/6/16 下午9:31
  * @desc 利用sparkStream计算WorldCount
  *      yun search nc
  *      运行步骤:在服务端开启 nc -lk 9999
  *      然后启动该程序
  *      在服务端输入参数,在控制台就可以看见效果了
  */

object WorldCount {
  def main(args: Array[String]): Unit = {
    //创建SparkStream对象
    val conf = new SparkConf().setAppName("Streaming").setMaster("local[*]")

    //创建StreamingContext对象
    val ssc = new StreamingContext(conf,Seconds(5))

    //创建一个接收器来接受数据 DStream[String]
    val linesDStream = ssc.socketTextStream("hadoop102",9999)

    //flapMap转换为单词
    val worldDStream = linesDStream.flatMap(_.split(" "))

    //将单词转换为kv结构
    val kvDStream = worldDStream.map((_,1))

    //将相同的单词进行合并
    val result = kvDStream.reduceByKey(_+_)

    result.print()

    ssc.start()

    ssc.awaitTermination()

  }

}

    注意:如果程序运行时log日志太多,可以将的log4j(log4j.properties)文件里面的日志级别改成WARN,添加到resource目录下:

#
# Copyright (c) 2017. WuYufei All rights reserved.
#
log4j.rootLogger=error,stdout,R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}  %5p --- [%t]  %-c(line:%L) : %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=spark.log
log4j.appender.R.MaxFileSize=1024KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}  %5p --- [%t]  %-c(line:%L) : %m%n

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员学习圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值