flink1.19.2+cdc-3.2.1遇到的问题及解决方案

No operators defined in streaming topology. Cannot generate StreamGraph

原因是博主想通过在flinkjar中写flinksql,以jar的方式提交application模式的作业(因为无法直接使用yarn-application提交flinksql)。

代码中有create和insert intosql,但是运行时报上面错误,各方面查找资料,其原因是flink没有识别insert操作,解决方案就是显示提交insert

错误代码

java 复制代码
public static void execute(String content, TableEnvironment tEnv) {
        List<String> insertSql = new ArrayList<>();
        // 分割SQL语句
        Arrays.stream(content.split(";"))
                .map(String::trim)
                .filter(s -> !s.isEmpty())
                .forEach(sql -> {
                    sql = sql.replaceAll(SEMICOLON, ";").replaceAll(SY, "\"").replaceAll(SDY, "`");
                    if (!sql.endsWith(";")) {
                        sql = sql + ";"; // 加上分号
                    }
					System.out.println("执行SQL>>>" + sql);
					tEnv.executeSql(sql);
                });
}

修改后

java 复制代码
public static void execute(String content, TableEnvironment tEnv) {
        List<String> insertSql = new ArrayList<>();
        // 分割SQL语句
        Arrays.stream(content.split(";"))
                .map(String::trim)
                .filter(s -> !s.isEmpty())
                .forEach(sql -> {
                    if (!sql.endsWith(";")) {
                        sql = sql + ";"; // 加上分号
                    }
                    if (sql.toUpperCase().startsWith("INSERT")) {
                        insertSql.add(sql);
                    } else {
                        System.out.println("执行SQL>>>" + sql);
                        tEnv.executeSql(sql);
                    }
                });
        // 统一执行insert
        // 显式触发, 否则会报错The main method caused an error: No operators defined in streaming topology. Cannot execute.
        if (insertSql.size() > 0) {
            StatementSet stmtSet = tEnv.createStatementSet();
            for (String insert : insertSql) {
                // 添加多个 INSERT 语句
                System.out.println("执行SQL>>>" + insert);
                stmtSet.addInsertSql(insert);
            }
            try {
                // 执行并设置作业名称
                TableResult result = stmtSet.execute();
                JobClient jobClient = result.getJobClient().orElseThrow(
                        () -> new RuntimeException("无法获取JobClient")
                );
                System.out.println("等待作业启动...");
                // 等待作业进入运行状态
                JobStatus status = jobClient.getJobStatus().get(STATUS_TIMEOUT, TimeUnit.SECONDS);

                if (status == JobStatus.RUNNING) {
                    System.out.println("作业已正常运行");
                    // 添加2秒延迟确保状态同步
                    Thread.sleep(2000);
                } else {
                    throw new IllegalStateException("作业启动失败,状态: " + status);
                }
            } catch (InterruptedException | ExecutionException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            } catch (TimeoutException e) {
                throw new RuntimeException(e);
            }
        }
    }

ERROR org.apache.flink.shaded.curator5.org.apache.curator.ConnectionState - Authentication failed

在flink的conf.yml添加

yaml 复制代码
zookeeper:
  sasl:
    disable: true

hadoop日志里中文显示成了问号

在flink的conf.yml添加

yaml 复制代码
env:
  java:
    opts:
      all: -Dfile.encoding=UTF-8

Invalid event: APP_UPDATE_SAVED at ACCEPTED

flink/lib下添加flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar

java.lang.NoSuchMethodError: org.apache.commons.cli.Option.builder(Ljava/lang/String;)Lorg/apache/commons/cli/Option$Builder;

flink/lib下添加commons-cli-1.5.0.jar

yarn启动容器使用随机端口的问题

需要节点间端口互通,否则经常会因为端口不通而导致容器启动不起来

#假设要允许192.168.0.66和192.168.0.67访问本机所有端口

shell 复制代码
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.66" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.67" accept'
sudo firewall-cmd --reload
相关推荐
expect7g2 分钟前
Paimon源码解读 -- Compaction-4.KeyValueFileStoreWrite
大数据·flink
老蒋新思维1 小时前
创客匠人 2025 万人峰会核心:AI 驱动知识产品变现革新
大数据·人工智能·网络协议·tcp/ip·创始人ip·创客匠人·知识变现
expect7g1 小时前
Paimon源码解读 -- FULL_COMPACTION_DELTA_COMMITS
大数据·后端·flink
老蒋新思维2 小时前
创客匠人峰会新视角:AI 时代知识变现的 “组织化转型”—— 从个人 IP 到 “AI+IP” 组织的增长革命
大数据·人工智能·网络协议·tcp/ip·创始人ip·创客匠人·知识变现
TMO Group 探谋网络科技3 小时前
AI Agent工作原理:如何连接数据、决策与行动,助力企业数字化转型?
大数据·人工智能·ai
Chasing Aurora4 小时前
Git 工程指引(命令+问题)
大数据·git·elasticsearch·团队开发·互联网大厂
TG:@yunlaoda360 云老大4 小时前
阿里云国际站代理商RPA跨境服务的适用场景有哪些?
大数据·阿里云·rpa
微盛企微增长小知识5 小时前
2025企业微信服务商测评:头部服务商微盛AI·企微管家技术实力与落地效果解析
大数据·人工智能·企业微信
TMO Group 探谋网络科技5 小时前
AI电商的应用:Magento 使用 Adobe 生成式 AI改造7大业务场景
大数据·人工智能·adobe·ai
UI设计兰亭妙微5 小时前
理性数据,温柔体验:北京兰亭妙微解码 Hydra Corps. 企业管理界面的 “松弛感设计”
大数据·人工智能·用户体验设计