flink sql1.18.0连接SASL_PLAINTEXT认证的kafka3.3.1

阅读此文默认读者对docker、docker-compose有一定了解。

环境

docker-compose运行了一个jobmanager、一个taskmanager和一个sql-client。

如下:

XML 复制代码
version: "2.2"
services:
  jobmanager:
    image: flink:1.18.0-scala_2.12
    container_name: jobmanager
    ports:
      - "7081:8081"
    command: jobmanager
    volumes:
      - ./jobmanager:/opt/flink
    environment:
      - |
        FLINK_PROPERTIES=
        jobmanager.rpc.address: jobmanager

  taskmanager:
    image: flink:1.18.0-scala_2.12
    container_name: taskmanager1
    depends_on:
      - jobmanager
    command: taskmanager
    volumes:
      - ./taskmanager1:/opt/flink
    scale: 1
    environment:
      - |
        FLINK_PROPERTIES=
        jobmanager.rpc.address: jobmanager
        taskmanager.numberOfTaskSlots: 32
  sql-client:
    image: flink:1.18.0-scala_2.12
    container_name: sql-client-1
    command: bin/sql-client.sh
    volumes:
      - ./sql-client:/opt/flink
    depends_on:
      - jobmanager
    environment:
      - |
        FLINK_PROPERTIES=
        jobmanager.rpc.address: jobmanager
        rest.address: jobmanager

注意三个容器都映射了/opt/flink目录。需要先将/opt/flink目录拷贝到跟docker-compose.yml同一目录下,并分别重命名,如下图:

三个文件夹内容是一样的,只是名字不一样。

以上环境介绍完毕。

在maven官网下载相应jar包,分别放入上述三个文件夹的lib目录下。例如jobmanager:

启动sql-client,我用docker-compose启动的,因此命令为:docker-compose run sql-client.

创建kafka表

sql 复制代码
CREATE TABLE TestTable (
  `event_time` TIMESTAMP(3) METADATA FROM 'timestamp',
  `partition` BIGINT METADATA VIRTUAL,
  `offset` BIGINT METADATA VIRTUAL,
  `presetBit` STRING,
  `imageTime` STRING,
  `imageName` STRING,
  `thumbnailWidth` BIGINT,
  `size` BIGINT,
  `thumbnailSize` BIGINT,
  `behavior` STRING,
  `imageUri` STRING,
  `presetId` STRING
) WITH (
  'connector'='kafka',
  'topic'='mytopic',
  'properties.bootstrap.servers'='localhost:9092',
  'properties.group.id'='testGroup',
  'scan.startup.mode'='earliest-offset',
  'format'='json',
  'properties.security.protocol'='SASL_PLAINTEXT',
  'properties.sasl.mechanism'='PLAIN',
  'properties.sasl.jaas.config'='org.apache.flink.kafka.shaded.org.apache.kafka.common.security.plain.PlainLoginModule required username="your-username" password="your-pwd";'
);

说明:

①标识字段为kafka自带字段,topic中没有也会自带。

②标识的字段为topic中存储的字段,根据自己topic来。

③为自己的topic名称

④为kafka集群地址

⑤后面的username和password需要根据实际情况修改。

创建表以后执行select * from TestTable,可以看到类似下图的内容:

flink官网留下的坑

坑主要出现在最后一行。

flink官网是这样写的

首先指定的类不对,应该是org.apache.flink.kafka.shaded.org.apache.kafka.common.security.plain.PlainLoginModule,如果按照官网写会报错:Caused by: javax.security.auth.login.LoginException: No LoginModule found for org.apache.kafka.common.security.plain.PlainLoginModule。

其次,username和password的双引号不需要写反斜杠,写反斜杠反而会报错。

相关推荐
livemetee22 分钟前
一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (二)
大数据·elk·搜索引擎
TDengine (老段)43 分钟前
TDengine 开发指南——无模式写入
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
TDengine (老段)1 小时前
TDengine 在电力行业如何使用 AI ?
大数据·数据库·人工智能·时序数据库·tdengine·涛思数据
盛寒2 小时前
自然语言处理 目录篇
大数据·自然语言处理
武子康3 小时前
大数据-276 Spark MLib - 基础介绍 机器学习算法 Bagging和Boosting区别 GBDT梯度提升树
大数据·人工智能·算法·机器学习·语言模型·spark-ml·boosting
武子康3 小时前
大数据-277 Spark MLib - 基础介绍 机器学习算法 Gradient Boosting GBDT算法原理 高效实现
大数据·人工智能·算法·机器学习·ai·spark-ml·boosting
咸鱼求放生11 小时前
es在Linux安装
大数据·elasticsearch·搜索引擎
人大博士的交易之路12 小时前
今日行情明日机会——20250606
大数据·数学建模·数据挖掘·数据分析·涨停回马枪
Leo.yuan15 小时前
数据库同步是什么意思?数据库架构有哪些?
大数据·数据库·oracle·数据分析·数据库架构
SelectDB技术团队16 小时前
从 ClickHouse、Druid、Kylin 到 Doris:网易云音乐 PB 级实时分析平台降本增效
大数据·数据仓库·clickhouse·kylin·实时分析