sparkstreamnig实时处理入门

1.2 SparkStreaming实时处理入门

1.2.1 工程创建

导入maven依赖

Go 复制代码
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.12</artifactId>
    <version>3.1.2</version>
</dependency>
<dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming-kafka-0-10_2.12</artifactId>
            <version>3.1.2</version>
        </dependency>
1.2.2 入口类StreamingContext
复制代码
SparkStreaming中的入口类,称之为StreamingContext,但是底层还是得需要依赖SparkContext。
复制代码
object SparkStreamingWordCountOps {
    def main(args: Array[String]): Unit = {
        /*
            StreamingContext的初始化,需要至少两个参数,SparkConf和BatchDuration
            SparkConf不用多说
            batchDuration:提交两次作业之间的时间间隔,每次会提交一个DStream,将数据转化batch--->RDD
            所以说:sparkStreaming的计算,就是每隔多长时间计算一次数据
         */
        val conf = new SparkConf()
                    .setAppName("SparkStreamingWordCount")
                    .setMaster("local[*]")
        val duration = Seconds(2)
        val ssc = new StreamingContext(conf, duration) //批次
​
        //业务
        
        
        //为了执行的流式计算,必须要调用start来启动
        ssc.start()
        //为了不至于start启动程序结束,必须要调用awaitTermination方法等待程序业务完成之后调用stop方法结束程序,或者异常
        ssc.awaitTermination()
    }
}
1.2.3 业务编写

SparkStreaming是一个流式计算的计算引擎,那么 就模拟一个对流式数据进行单词统计

代码实现

复制代码
package com.qianfeng.sparkstreaming
​
import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Durations, StreamingContext}
​
/**
 * sparkStreaming的流程序
 */
object Demo01_SparkStreaming_WC {
  def main(args: Array[String]): Unit = {
    //1、获取streamingcontext
    val conf = new SparkConf()
      .setAppName("streaming wc")
      .setMaster("local[*]")
    val sc = new StreamingContext(conf, Durations.seconds(2)) //微批次微2s
    //2、初始化数据
    val ds = sc.socketTextStream("qianfeng01", 6666)
    //3、对数据进行操作
    val sumDS = ds.flatMap(_.split(" "))
      #判断H开头 5位
      .filter(x=>x.startsWith("H") && x.length == 5)
      .map((_, 1))
      .reduceByKey(_ + _)
    //4、对数据做输出
    sumDS.print()
​
    //5、开启sc
    sc.start()
    //6、等待结束  --- 实时不能停止
    sc.awaitTermination()
  }
}

使用netcat进行测试(如果没有请先安装,有则忽略如下)

需要在任意一台节点上安装工具:

复制代码
[root@qianfeng01 home]# yum install -y nc

启动监听端口:

复制代码
[root@qianfeng01 home]# nc -lk 6666
hello nihao
nihao hello
hi
hello nihao

Guff_hys_python数据结构,大数据开发学习,python实训项目-CSDN博客

相关推荐
努力的小雨4 小时前
把 Windows 桌面图标做成一个会自己运转的小世界
后端
এ慕ོ冬℘゜4 小时前
前端实战:jQuery 多条件联合搜索(标题模糊查询 + 日历时间段筛选)
前端·javascript·jquery
武子康5 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
大模型码小白5 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司5 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
IT_陈寒6 小时前
Vue这个特性差点让我加班到凌晨,谁懂啊
前端·人工智能·后端
段一凡-华北理工大学6 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
Ljwuhe7 小时前
C++——多态
开发语言·c++
延凡科技7 小时前
多场景落地复盘:端边云架构无人机智能巡检系统设计与实践
大数据·数据结构·人工智能·科技·架构·无人机·能源
码事漫谈7 小时前
1999年的电商前夜和2026年的AI前夜 历史押韵但从不重复
后端