首页 > 其他分享 >PySpark中的StructStreaming的使用

PySpark中的StructStreaming的使用

时间:2024-11-08 12:20:41浏览次数:3  
标签:__ PySpark Structured lines environ 使用 StructStreaming os Spark

使用pyspark编写StructStreaming的入门案例,如有雷同,纯属巧合,所有代码亲测可用。

一、SparkStreaming 的不足

1.基于微批,延迟高不能做到真正的实时

2.DStream基于RDD,不直接支持SQL

3.流批处理的API应用层不统一,(流用的DStream-底层是RDD,批用的DF/DS/RDD)

4.不支持EventTime事件时间

5.数据的Exactly-Once(恰好一次语义)需要手动实现

二、StructuredStreaming 的介绍

Spark在2016年Spark2.0版本中发布了新的流计算的API:Structured streaming结构化流。Structured streaming是一个基于SparkSOL引擎的可扩展、容错的全新的流处理引擎。

structured Streaming统一了流、批的编程模型,可以让用户像编写批处理程序一样简单地编写高性能的流处理程序Structured streaming并不是对Spark Streaming的简单改进,而是吸取了在开发SparkSQL和Sparkstreaming过程中的经验教训,以及Spark社区和Databricks众多客户的反馈,重新开发的全新流式引擎,致力于为批处理和流处理提供统一的高性能API。

在Structured streaming这个新的引擎中,也实现了之前在SparkStreaming中没有的一些功能,比如Event Time(事件时间)的支持,Stream-Streamjoin(2.3.0),Continuous Processing毫秒级延迟(2.3.0)。同时也考虑了和Spark 其他组件更好的集成。

Structured Streaming Programming Guide - Spark 3.5.3 Documentation

三、编程模型

四、Source

Structured Streaming Programming Guide - Spark 3.5.3 Documentation

案例一:Socket

import os

from pyspark.sql import SparkSession
from pyspark.sql.functions import explode
from pyspark.sql.functions import split




if __name__ == '__main__':
    # 配置环境
    os.environ['JAVA_HOME'] = 'C:/Program Files/Java/jdk1.8.0_241'
    # 配置Hadoop的路径,就是前面解压的那个路径
    os.environ['HADOOP_HOME'] = 'D:/hadoop-3.3.1'
    # 配置base环境Python解析器的路径
    os.environ['PYSPARK_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'  # 配置base环境Python解析器的路径
    os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/ProgramData/Miniconda3/python.exe'
    os.environ['HADOOP_USER_NAME'] = 'root'

    spark = SparkSession \
        .builder \
        .appName("StructuredNetworkWordCount") \
        .getOrCreate()
    # Create DataFrame representing the stream of input lines from connection to localhost:9999
    lines = spark \
        .readStream \
        .format("socket") \
        .option("host", "bigdata01") \
        .option("port", 9999) \
        .load()

    # Split the lines into words
    words = lines.select(
       explode(
           split(lines.value, " ")
       ).alias("word")
    )

    # Generate running word count
    wordCounts = words.groupBy("word").count()
    # Start running the query that prints the running counts to the console
    query = wordCounts \
        .writeStream \
        .outputMode("complete") \
        .format("console") \
        .start()

    query.awaitTermination()
    spa

标签:__,PySpark,Structured,lines,environ,使用,StructStreaming,os,Spark
From: https://blog.csdn.net/wozhendeyumenle/article/details/143622284

相关文章

  • c++多态学习:多态含义与使用
    目录 多态的概念多态的定义多态的实现注意事项 多态的概念多态是面向对象编程中的一个重要概念,它指的是同一个行为具有多个不同表现形式或形态的能力。在C++中,多态主要通过虚函数来实现,允许将子类类型的指针赋值给父类类型的指针,并在运行时根据实际对象类型调用相......
  • Vuex的基本使用
    文章目录一、Vuex概述1.是什么2.使用场景3.优势4.注意二、如何构建vuex多组件共享数据环境1.创建项目2.创建三个组件3.源代码三、vuex的使用-创建仓库1.安装vuex2.新建`store/index.js`专门存放vuex3.创建仓库`store/index.js`4在main......
  • 使用AI工具生成代码时的几点注意事项
    你只有将需求的上下文清晰的传递给模型,模型才能给出更合理的代码供你使用,否则给出的只能是片断,功能不完整。将上下文有效地传递给大模型(如ChatGPT或Claude)可以显著提升生成代码的合理性和实用性。以下是一些方法和策略,帮助你更好地提供上下文,从而获得更优质的代码生成结果......
  • 使用 ref 引用值
    当你希望组件“记住”某些信息,但又不想让这些信息触发新的渲染时,你可以使用ref。constref=useRef(0);useRef返回一个这样的对象:{current:0//你向useRef传入的值}与state一样,ref在重新渲染之间由React保留。但是,设置state会重新渲染组件,而更改ref......
  • 【前端】浅谈SOLID原则在前端的使用
    原创宁奇舞精选本文作者系360奇舞团前端开发工程师简介SOLID原则是由RobertC.Martin在2000年提出的一套软件开发准则,最初用于面向对象编程(OOP),旨在解决软件开发中的复杂性和维护问题。随着时间推移,它不仅在传统OOP语言中广泛应用,也被引入到JavaScript和TypeS......
  • 命令行工具PowerShell使用体验
    命令行工具PowerShell使用PowerShell是微软开发的一种面向对象的命令行Shell和脚本语言环境,它允许用户通过命令行的方式管理操作系统。相较于传统CMD,PowerShell增加了面向对象的程序设计框架,拥有更强大的功能和扩展性。使用PowerShell可以方便地自动化系统管理任务,构建脚本......
  • helm chart denpence 怎么使用
    好的,下面我将通过一个具体的例子来展示如何在HelmChart中使用`dependencies`字段来管理依赖。###场景描述假设我们有一个主Chart,名为`my-app`,它依赖于两个子Chart:`nginx`和`mysql`。我们需要在`my-app`Chart中声明这些依赖,并确保在部署`my-app`时,`nginx`和......
  • laravel11:安装使用octane
    一,什么是octane?1,LaravelOctane 通过使用高性能应用程序服务器为您的应用程序提供服务来增强您的应用程序的性能,  包括OpenSwoole,Swoole,和 RoadRunner。Octane启动您的应用程序一次,将其保存在内存中,然后以极快的速度向它提供请求。2,官网地址:https://laravel.com/d......
  • EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何
    在现代视频监控领域,跨区域的网络化视频监控管理平台成为了大中型项目的首选。EHOME视频平台EasyCVR以其强大的功能和兼容性,成为了众多项目的核心组件。它不仅能够管理视频资源、设备、用户、运维和安全,还支持多种行业标准协议,包括GB28181、GB35114、RTSP/Onvif、RTMP、JT808、GA/T......
  • jeecg使用vue-pdf 和print-js实现pdf预览和打印
    前言近期我正在开发一个前后端分离项目,使用了SpringBoot和Vue2,借助了国内优秀的框架jeecg,前端UI库则选择了ant-design-vue。在项目中,需要实现文件上传功能,同时还要能够在线预览和下载图片和PDF文件,甚至需要在页面上直接打印PDF文件。尽管框架自带了vue-print-nb-jeecg组件......