StructuredStreaming (二)——kafka

将数据从kafka的某个主题中抽取出来,再将数据放入另一个主题中

一、导入jar包

通过百度网盘分享的文件:python-kafka

链接:https://pan.baidu.com/s/1q2UlOJFBNNuhRC87AlAACg?pwd=c6dy

提取码:c6dy

将这六个jar包放入本地pyspark中jars下

二、案例编写

首先需要生成数据,将数据源源不断的导入topicA中,再使用spark读取kafka中的数据,然后将清洗过的数据导入etlTopic中

复制代码
import os

from pyspark.sql import SparkSession
from pyspark.sql.functions import explode
import pyspark.sql.functions as F

if __name__ == '__main__':
    os.environ['JAVA_HOME'] = 'E:/java-configuration/jdk-8'
    # 配置Hadoop的路径,就是前面解压的那个路径
    os.environ['HADOOP_HOME'] = 'E:/applications/bigdata_config/hadoop-3.3.1/hadoop-3.3.1'
    # 配置base环境Python解析器的路径
    os.environ['PYSPARK_PYTHON'] = 'C:/Users/35741/miniconda3/python.exe'
    # 配置base环境Python解析器的路径
    os.environ['PYSPARK_DRIVER_PYTHON'] = 'C:/Users/35741/miniconda3/python.exe'

    # 创建一个sparkSession对象
    spark = SparkSession.builder.appName("kafkaDemo").getOrCreate()

    kafkaDf = spark \
        .readStream \
        .format("kafka") \
        .option("kafka.bootstrap.servers", "bigdata01:9092") \
        .option("subscribe", "topicA") \
        .option("startingOffsets", "latest") \
        .load()
    # 这个就是为了 筛出想要的数据
    dataDf = kafkaDf.selectExpr("CAST(value AS STRING)")
    dataDf.createOrReplaceTempView("tmp")
    etlDf = spark.sql("""
    select * from tmp where value like "%success%"
    """)

    etlDf.writeStream \
        .format("kafka") \
        .option("kafka.bootstrap.servers", "bigdata01:9092") \
        .option("topic", "etlTopic") \
        .option("checkpointLocation", "../../resources/ckp") \
        .start().awaitTermination()

    spark.stop()
相关推荐
Prince-Peng2 小时前
技术架构系列 - 详解Redis
数据结构·数据库·redis·分布式·缓存·中间件·架构
曹天骄4 小时前
基于 Cloudflare Worker + KV 构建高性能分布式测速调度系统(工程实战)
分布式
奋进的芋圆4 小时前
Spring Boot 3 高并发事务与分布式事务企业级完整解决方案
spring boot·分布式
没有bug.的程序员4 小时前
Spring Boot 与 Kafka:消息可靠性传输与幂等性设计的终极实战
java·spring boot·后端·kafka·幂等性·消息可靠
你才是臭弟弟5 小时前
Docker 拉取 Kafka 镜像及策略配置
docker·容器·kafka
淡泊if5 小时前
Kafka部署模式详解:从单机到分布式集群的核心选择
分布式·kafka
鱼跃鹰飞5 小时前
面试题:什么是时钟回拨问题?怎么解决
分布式·系统架构
无心水5 小时前
分布式环境下定时任务与SELECT FOR UPDATE的陷阱与解决方案
分布式·后端·wpf·xxl-job·quartz·定时任务·selectforupdate
缘友一世5 小时前
大模型分布式推理:Ray 与 vLLM/Transformers 的协同架构深度解析
分布式·架构·transformer·ray·vllm
亚里随笔6 小时前
MegaFlow:面向Agent时代的大规模分布式编排系统
人工智能·分布式·llm·rl·agentic