StructStream基本知识及案例

本文介绍了Spark的StructStreaming,它是一个基于SparkSql引擎的流处理引擎,提供了一致的API,简化了流式和批量处理的编程模型。StructStreaming通过使用SQL计算实时数据,降低了实时处理的学习难度,并具有卓越的性能和多语言支持。文章通过wordcount的四种实现方式,展示了其在实际应用中的灵活性,包括从Socket端口、本地文件、Kafka以及与MySQL的集成。
摘要由CSDN通过智能技术生成

Spark Streaming 是基于SparkCore
StructStreaming 是一个基于SparkSql 引擎 的可扩展,容错的流处理引擎

StructStreamimg 是一个基于 表 的可扩展,容错的流式处理引擎
StructStraming 意义:

使用sql计算实时数据,使用简单易学的技术实现实时计算,降低了学习实时处理的学习难度

SparkSql: 作用是计算离线数据,接收sql转换成算子,意义:降低了学习难度

Spark Streaming:作用是计算实时数据,意义:能够近实时计算最最新的数据(实时计算)

SparkSql和SparkStream可以进行整合

sparksql内部数据抽象(DF或者是DS)

DF=rdd+结构(属性) -->表
DS=rdd+结构(属性)+类型 =DF+类型 -->表

StructStreaming 的优点

1 不需要考虑是流式还是批量 ,只要用同样的方式编写计算就可以,提供了快速,可扩展,容错,端到端的一次性流处理

2 简洁的模型

可以直接把一个流 想象成一个无限增站的表格

3一致的API

和SparkSql公用大部分API,同时批处理和流处理程序共用代码

4卓越的性能

速度快 ,离线和实时

5 多语言的支持

java R scala

StructStreaming 编程模型

StructStreaming 实质是:一个次序增长动态表格,新增的数据源源不会写入表格的尾部

在这里插入图片描述
触发器
定期周期执行

一个里输出的模式有哪几种:查询后的完整结果, 查询相比的差异 ,追加最新的结果

wordcount案例图示

在这里插入图片描述

StructStreaming 案例

wordcount四种方式

1使用StructStreaming 读取Socket 端口数据



import org.apache.spark.SparkContext
import org.apache.spark.sql.streaming.Trigger
import org.apache.spark.sql.{
   DataFrame, Dataset, Row, SparkSession}

object SparkStruct01_socket {
   

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


    //创建sparksession
    val spark: SparkSession = SparkSession.builder().appName("readsocket").master("local[*]")
      .getOrCreate()

    // 创建驱动
    val sc: SparkContext = spark.sparkContext

    // 设置日志级别
    sc.setLogLevel("WARN")
    // 读取数据
    val sockeDataRow: DataFrame = spark.readStream.option("host", "node01").option("port", "9999")
      .format("socket").load()

    // 导入隐式转换
    import spark.implicits._
    // 读取到的每行数据
    val socketDataString: Dataset[String] = sockeDataRow.as[String]

    // 对每行数据进行一个处理
    val word: Dataset[String] = socketDataString.flatMap(a => a.split(" "))

    // 对读取的数据进行计算(写sql语句)
    val StrucWordCount: Dataset[Row] = word.groupBy("value").count().sort($"count")


    // 对计算完的数据进行输出
    
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值