Apache flink ApacheFlink:JDBCInputFormat返回什么类型的记录?

Apache flink ApacheFlink:JDBCInputFormat返回什么类型的记录?,apache-flink,Apache Flink,我收到一个与JDBCInputFormat的setRowTypeInfo相关的错误。错误如下。显然,数据集的Tuple2类型不喜欢JDBCInputFormat的RowTypeInfo,但我找不到任何地方可以说明如何定义格式 [错误]无法执行目标 插件:maven编译器插件:3.1:编译 flink项目上的(默认编译):编译失败[错误] /Users/rocadmin/Desktop/flink/flink/src/main/java/svalarms/BatchJob.java:[125,48

我收到一个与
JDBCInputFormat
setRowTypeInfo
相关的错误。错误如下。显然,
数据集的
Tuple2
类型不喜欢
JDBCInputFormat
RowTypeInfo
,但我找不到任何地方可以说明如何定义格式

[错误]无法执行目标 插件:maven编译器插件:3.1:编译 flink项目上的(默认编译):编译失败[错误] /Users/rocadmin/Desktop/flink/flink/src/main/java/svalarms/BatchJob.java:[125,48] 不兼容的类型:推断的类型不符合等式 推断出的约束[错误]: org.apache.flink.api.java.tuple.Tuple2 [错误]相等约束: org.apache.flink.api.java.tuple.Tuple2,org.apache.flink.types.Row [错误][错误]->[帮助1]

DataSetdbData=
env.createInput(
jdbInputFormat.buildjdbInputFormat()
.setDrivername(“oracle.jdbc.driver.OracleDriver”)
.setDBUrl(“jdbc:oracle:thin:@/[ip]:1521/sdmprd”)
.setQuery(“”)+
选择T2.work\U order\U nbr,T2.work\U order\U nbr+
“来自sdm.work\u order\u master T2”+
“哪里”+
“截止日期(T2.DATE输入+19000000,'yyymmd')>=当前日期-14”+
“和T2.W_O_类型='TC'”+
“和T2.OFFICE_ONLY_FLG='N'”+
"")
.setRowTypeInfo(新的RowTypeInfo(BasicTypeInfo.INT_TYPE_INFO,BasicTypeInfo.INT_TYPE_INFO))
.finish()
);

A
JDBCInputFormat
返回类型为
行的记录。因此,生成的
数据集
应键入到
,即

DataSet<Row> dbData =
  env.createInput(
    JDBCInputFormat.buildJDBCInputFormat()
      .setDrivername("oracle.jdbc.driver.OracleDriver")
      .setDBUrl("jdbc:oracle:thin:@//[ip]:1521/sdmprd")
      .setQuery(
        "SELECT T2.work_order_nbr, T2.work_order_nbr " +
        "FROM sdm.work_order_master T2  " +
        "WHERE " +
          "TO_DATE(T2.date_entered + 19000000,'yyymmdd') >= CURRENT_DATE - 14 " +
          "AND T2.W_O_TYPE = 'TC' " +
          "AND T2.OFFICE_ONLY_FLG = 'N' "
        )
      .setRowTypeInfo(Types.ROW(Types.INT, Types.INT))
      .finish()
    );
DataSet-dbData=
env.createInput(
jdbInputFormat.buildjdbInputFormat()
.setDrivername(“oracle.jdbc.driver.OracleDriver”)
.setDBUrl(“jdbc:oracle:thin:@/[ip]:1521/sdmprd”)
.setQuery(
选择T2.work\U order\U nbr,T2.work\U order\U nbr+
“来自sdm.work\u order\u master T2”+
“哪里”+
“截止日期(T2.DATE输入+19000000,'yyymmd')>=当前日期-14”+
“和T2.W_O_类型='TC'”+
“和T2.OFFICE_ONLY_FLG='N'”
)
.setRowTypeInfo(Types.ROW(Types.INT,Types.INT))
.finish()
);
开始了

TypeInformation[] fieldTypes = new TypeInformation[] {
        BasicTypeInfo.BIG_DEC_TYPE_INFO,
        BasicTypeInfo.BIG_DEC_TYPE_INFO
};

RowTypeInfo rowTypeInfo = new RowTypeInfo(fieldTypes);
JDBCInputFormatBuilder inputBuilder =
        JDBCInputFormat.buildJDBCInputFormat().setDrivername("oracle.jdbc.driver.OracleDriver").setDBUrl("jdbc:oracle:thin:@//ipaddress:1521/sdmprd").setQuery("" +
                "SELECT T2.work_order_nbr  , T2.work_order_nbr  " +
                "FROM sdm.work_order_master T2  " +
                "WHERE " +
                "TO_DATE(T2.date_entered + 19000000,'yyyymmdd') >= CURRENT_DATE - 14 " +
                "AND T2.W_O_TYPE = 'TC' " +
                "AND T2.OFFICE_ONLY_FLG = 'N' " +
                "").setRowTypeInfo(rowTypeInfo).setUsername(“user”).setPassword(“pass”);
DataSet<Row> source = env.createInput(inputBuilder.finish());
TypeInformation[]fieldTypes=新类型信息[]{
基本类型信息.BIG\u DEC\u类型信息,
基本类型信息.BIG\u DEC\u类型信息
};
RowTypeInfo RowTypeInfo=新的RowTypeInfo(字段类型);
JDBCInputFormatBuilder inputBuilder=
JDBCInputFormat.buildJDBCInputFormat().setDrivername(“oracle.jdbc.driver.OracleDriver”).setDBUrl(“jdbc:oracle:thin:@//ipaddress:1521/sdmprd”).setQuery(“+
选择T2.work\U order\U nbr,T2.work\U order\U nbr+
“来自sdm.work\u order\u master T2”+
“哪里”+
“截止日期(T2.DATE输入+19000000,'yyyymmdd')>=当前日期-14”+
“和T2.W_O_类型='TC'”+
“和T2.OFFICE_ONLY_FLG='N'”+
).setRowTypeInfo(rowTypeInfo).setUsername(“用户”).setPassword(“通行证”);
DataSet source=env.createInput(inputBuilder.finish());
TypeInformation[] fieldTypes = new TypeInformation[] {
        BasicTypeInfo.BIG_DEC_TYPE_INFO,
        BasicTypeInfo.BIG_DEC_TYPE_INFO
};

RowTypeInfo rowTypeInfo = new RowTypeInfo(fieldTypes);
JDBCInputFormatBuilder inputBuilder =
        JDBCInputFormat.buildJDBCInputFormat().setDrivername("oracle.jdbc.driver.OracleDriver").setDBUrl("jdbc:oracle:thin:@//ipaddress:1521/sdmprd").setQuery("" +
                "SELECT T2.work_order_nbr  , T2.work_order_nbr  " +
                "FROM sdm.work_order_master T2  " +
                "WHERE " +
                "TO_DATE(T2.date_entered + 19000000,'yyyymmdd') >= CURRENT_DATE - 14 " +
                "AND T2.W_O_TYPE = 'TC' " +
                "AND T2.OFFICE_ONLY_FLG = 'N' " +
                "").setRowTypeInfo(rowTypeInfo).setUsername(“user”).setPassword(“pass”);
DataSet<Row> source = env.createInput(inputBuilder.finish());