Java Flink群集写入mysql的数据丢失

Java Flink群集写入mysql的数据丢失,java,mysql,hive,apache-flink,flink-streaming,Java,Mysql,Hive,Apache Flink,Flink Streaming,问题 读取hive中的数据并将其写入mysql。数据丢失了。 通过使用JDBCupsertTableLink传输数据,hive中有90条数据,mysql中有70条数据,但在本地测试中没有数据丢失。Flink没有任何异常信息提示 软件版本信息: Flink版本信息:1.11.1 配置单元版本信息:1.2.1 mysql版本信息:5.6 下面是我的程序 公共类MarketMonitorWriteMySQLJob{ 公共静态void main(字符串[]args)引发IOException{

问题
读取hive中的数据并将其写入mysql。数据丢失了。 通过使用JDBCupsertTableLink传输数据,hive中有90条数据,mysql中有70条数据,但在本地测试中没有数据丢失。Flink没有任何异常信息提示

  • 软件版本信息:

    • Flink版本信息:1.11.1
    • 配置单元版本信息:1.2.1
    • mysql版本信息:5.6
  • 下面是我的程序
  • 公共类MarketMonitorWriteMySQLJob{
    公共静态void main(字符串[]args)引发IOException{
    ParameterToolFactory ParameterToolFactory=新参数ToolFactory();
    ParameterTool ParameterTool=parameterToolFactory.createParameterTool();
    EnvironmentSettings=EnvironmentSettings.newInstance()
    .useBlinkPlanner()
    .inBatchMode()
    .build();
    表环境表环境=
    TableEnvironment.create(设置);
    tableEnv.getConfig().setsqldialent(sqldialent.HIVE);
    HiveCatalog HiveCatalog=新建HiveCatalog(CataLogEnum.new_BI.getCataLogName(),
    CataLogEnum.NEW_BI.getDbName(),
    参数tool.get(FlinkProperEnum.FLINK_HIVE_CONF_DIR.key));
    tableEnv.registerCatalog(CataLogEnum.NEW_BI.getCataLogName(),hiveCatalog);
    tableEnv.useCatalog(CataLogEnum.NEW_BI.getCataLogName());
    ParameterTool fromArgs=ParameterTool.fromArgs(args);
    字符串currentDay=DateConversionUtils.getCurrentDateToString();
    字符串currentDayNoBar=DateConversionUtils.getCurrentDateNoBarsToString();
    SQLBase marketMonitorSQL=新的marketMonitorSQL();
    String currentDateHour=String.valueOf(DateConversionUtils.getLastHour());
    String sql=“从新的商业智能市场监控作业中选择*,其中dt='2020-11-25'和hs=09”;
    如果(从args.getNumberOfParameters()>1){
    字符串currentday=fromArgs.get(“currentday”);
    字符串currenthour=fromArgs.get(“currenthour”);
    String[]externalParams=新字符串[]{currentday,currenthour};
    //sql=String.format(sql,externalParams);
    }否则{
    字符串[]dateArgs={currentDay,currentDateHour};
    //sql=String.format(sql,dateArgs);
    }
    System.out.println(sql);
    JdbcOptions options=JDBCOPTIONSGUNITILS.genJdbcOptions(
    parameterTool.get(FlinkProperEnum.FLINK_MYSQL_CUSTOM_DATASOURCE_NEWBI_URL.key),
    parameterTool.get(FlinkProperEnum.FLINK_MYSQL_CUSTOM_DATASOURCE_NEWBI_DRIVER_CLASS_NAME.key),
    parameterTool.get(FlinkProperEnum.FLINK\u MYSQL\u CUSTOM\u DATASOURCE\u NEWBI\u USERNAME.key),
    parameterTool.get(FlinkProperEnum.FLINK_MYSQL_CUSTOM_DATASOURCE_NEWBI_PASSWORD.key),
    “市场监督工作”);
    TableSchema schema=TableSchema.builder()
    .fields(marketMonitorSQL.getSinkTableFields(),marketMonitorSQL.getSinkTableFieldTypes())
    .build();
    jdbcusperttablesink tableSink=jdbcusperttablesink.builder()
    .setOptions(选项)
    .setTableSchema(模式)
    //.setFlushIntervalMills(1000)
    .setFlushMaxSize(100)
    .build();
    setKeyFields(marketMonitorSQL.getSinkTableKeys());
    tableLink.setIsAppendOnly(false);
    tableEnv.registerTableSink(“市场、监控、作业、mysql、接收器”,TableLink);
    Table Table=tableEnv.sqlQuery(sql);
    table.printSchema();
    StatementSet语句=tableEnv.createStatementSet();
    addInsert(“市场、监控、作业、mysql、接收器”,表);
    语句。execute();
    }
    }
    

    集群没有提供任何异常信息,我也没有处理问题的线索!谢谢大家的帮助:)

    你调试过程序了吗?@JustanotherJavaprogrammer我只需要打印查询的结果信息。在线Flink集群查询的结果正常,但写入mysql时数据丢失。可以编写本地测试。现在调试不知道怎么处理吗?