SeaTunnel多Transform配置问题

SeaTunnel 配置问题, 第一次玩,求解答(吐槽一下,提问的标签里没有SeaTunnel)

{
    "env": {
        "job.mode": "BATCH"
    },
    "source": [{
        "driver": "com.mysql.cj.jdbc.Driver",
        "password": "*",
        "plugin_name": "jdbc",
        "query": "select * from test_user",
        "url": "jdbc:mysql://192.168.*.*:3306/test_source",
        "user": "root"
    }],
    "transform": [ {
        "after_loc": 4,
        "before_loc": 6,
        "cover_key": "#",
        "dest_field": "id_card",
        "plugin_name": "CoverHAT",
        "result_table_name": "test_user_bak",
        "source_table_name": "test_user",
        "src_field": "id_card"
    }],
    "sink": [{
        "driver": "com.mysql.cj.jdbc.Driver",
        "password": "*",
        "plugin_name": "jdbc",
        "query": "insert into test_user_bak values(?,?,?,?,?)",
        "url": "jdbc:mysql://192.168.*.*:3306/test_target",
        "user": "root"
    }]
}

这是单个字段id_card的配置, 用来遮盖的,

img

结果就是图上这样, 可以运行.

但是一旦transform中有2个以上的转换逻辑,运行是就会报错, 首先要求在source中添加result_table_name,然后添加完运行又要求在sink中添加source_table_name,按要求添加完后就是如下这样了

{
    "env": {
        "job.mode": "BATCH"
    },
    "source": [{
        "driver": "com.mysql.cj.jdbc.Driver",
        "password": "*",
        "plugin_name": "jdbc",
        "query": "select * from test_user",
        "url": "jdbc:mysql://192.168.*.*:3306/test_source",
        "user": "root",
        "result_table_name": "test_user_bak"
    }],
    "transform": [{
        "cover_key": "*",
        "dest_field": "remark",
        "end_loc": 9,
        "plugin_name": "CoverBody",
        "result_table_name": "test_user_bak",
        "source_table_name": "test_user",
        "src_field": "remark",
        "start_loc": 4
    }, {
        "cover_key": "*",
        "dest_field": "mail",
        "plugin_name": "CoverBefore",
        "result_table_name": "test_user_bak",
        "source_table_name": "test_user",
        "special_key": "@",
        "src_field": "mail"
    }, {
        "after_loc": 4,
        "before_loc": 6,
        "cover_key": "#",
        "dest_field": "id_card",
        "plugin_name": "CoverHAT",
        "result_table_name": "test_user_bak",
        "source_table_name": "test_user",
        "src_field": "id_card"
    }],
    "sink": [{
        "driver": "com.mysql.cj.jdbc.Driver",
        "password": "*",
        "plugin_name": "jdbc",
        "query": "insert into test_user_bak values(?,?,?,?,?)",
        "url": "jdbc:mysql://192.168.*.*:3306/test_target",
        "user": "root",
        "source_table_name": "test_user"
    }]
}

这时候运行就会报错如下:

img

实在是不知道怎么解决, 求了解seatunnel的各位解答下, 可以肯定的是表都有.

不要给我GPT的没用的答案,都说了表都有, 单个转换可以正常运行, 多个不行, 还给我奇奇怪怪的回答, 一看就和我自己提问GPT回答的一样, 没意思.

根据你提供的配置信息,问题出现在多个转换逻辑时。根据报错信息,要求在source中添加result_table_name,然后在sink中添加source_table_name。你已经按要求进行了添加,但仍然报错。

根据你的配置信息,首先要确认以下几点:

  1. 确保test_usertest_user_bak这两个表在数据库中都存在,并且具有相应的字段。
  2. 确保数据库连接信息正确,包括URL、用户名和密码。
  3. 确保数据库驱动程序已正确配置。

如果上述检查都没有问题,那么报错可能是由于其他原因引起的。这种情况下,我们需要进一步分析报错信息以确定问题所在。可以提供完整的报错信息或日志,以便更好地帮助你解决问题。

请提供完整的报错信息或日志,以便更准确地定位问题并给出解决方案。

确认下 你的这个数据库 test_source 中确实存在 test_user 这个表 么?