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()
);
AJDBCInputFormat
返回类型为行的记录。因此,生成的数据集
应键入到行
,即
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());