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时数据丢失。可以编写本地测试。现在调试不知道怎么处理吗?