Spark-Streaming+Kafka+mysql实战示例


前言

本文将介绍一个使用Spark Streaming和Kafka进行实时数据处理的示例。通过该示例,您将了解到如何使用Spark Streaming和Kafka处理实时数据流,以及如何将处理后的数据保存到MySQL数据库中。示例涵盖了从环境搭建到代码实现的全过程,帮助您快速上手实时数据处理的开发。

zookeeper安装教程:zookeeper安装与配置:使用shell脚本在centos上进行zookeeper自动化下载安装配置(集群搭建版)
kafka安装教程:Kafka安装与配置-shell脚本一键安装配置(集群版)


一、简介

1. Spark-Streaming简介

Spark Streaming是Apache Spark的一个组件,用于实时流数据处理。它提供了高级别的API,可以使用类似于批处理的方式处理实时数据流。Spark Streaming可以与各种消息队列系统集成,包括Kafka、RabbitMQ等。

2. Kafka简介

Kafka是一个分布式流处理平台,具有高吞吐量、可扩展性和可靠性。它提供了一种可持久化、分布式、分区的日志服务,用于处理实时数据流。Kafka使用发布-订阅模型,消息被发布到一个或多个主题,然后由订阅该主题的消费者进行消费。


二、实战演练

开始之前先启动zookeeper集群和kafka集群。

1. MySQL数据库部分

这部分代码用于创建MySQL数据库和数据表,以及将从Kafka获取的数据保存到数据库中。

create database kafkademo;

创建数据表:

CREATE TABLE kafka_tb
(
    `txid`      varchar(255) PRIMARY KEY,
    `version`   varchar(255),
    `connector` varchar(255),
    `name`      varchar(255),
    `ts_ms`     varchar(255),
    `snapshot`  varchar(255),
    `db`        varchar(255),
    `sequence`  varchar(255),
    `schema`    varchar(255),
    `table`     varchar(255),
    `lsn`       varchar(255),
    `xmin`      varchar(255)
);

2. 导入依赖

这部分代码是Maven的依赖配置,用于引入所需的Spark、Kafka和MySQL相关的库。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.4.0</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.4.0</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>2.4.0</version>
</dependency>
<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
    <version>2.4.0</version>
</dependency>
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>2.8.0</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.26</version>
    <scope>compile</scope>
</dependency>

3. 编写实体类代码

这部分代码定义了一个Java类EntityMessage,用于将从Kafka获取的JSON数据转换为Java对象。

package com.zcs;

import lombok.Data;

import java.io.Serializable;

/**
 * @author zcs2312
 * @date 2023/12/12 20:49:47
 * @product_name IntelliJ IDEA
 * @project_name spark-kafka
 */
@Data
public class EntityMessage implements Serializable {
   
    private String op;
    private String ts_ms;
    private String transaction;
    private DataItem dataItem;

    @Data
    public static class DataItem {
   
        private String version;
        private String connector;
        private String name;
        private String ts_ms;
        private String snapshot;
        private String db;
        private String[] sequence;
        private String schema;
        private String table;
        private String txId;
        private String lsn;
        private String xmin;
    }
}

4. 编写kafka主题管理代码

这部分代码用于创建、删除和修改Kafka主题的一些操作。

package com.zcs;

import org.apache.kafka.clients.admin.*;
import org.apache.kafka.common.KafkaFuture;
import org.apache.kafka.common.config.ConfigResource;

import java.util.*;
import java.util.concurrent.ExecutionException;

/**
 * @author zcs2312
 * @date 2023/12/12 20:51:34
 * @product_name IntelliJ IDEA
 * @project_name spark-kafka
 */
public class KafkaTopicManager {
   
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BigDataMagician

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

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

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

打赏作者

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

抵扣说明:

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

余额充值