flink sql通过JdbcCatalog连接postgresql踩坑记录
flink sql可以通过JdbcCatalog连接postgresql数据库,从而实现直接对postgresql表的相关操作,相关代码如下:
StreamExecutionEnvironment bsEnv = StreamExecutionEnvironment.getExecutionEnvironment();
EnvironmentSettings bsSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build();
StreamTableEnvironment bsTableEnv = StreamTableEnvironment.create(bsEnv, bsSettings);
String catalogName = "mycatelog";
String defaultDatabase = "postgres";
String username = "postgres";
String pwd = "123456";
String baseUrl = "jdbc:postgresql://**.**.**.**:5432/";
JdbcCatalog jdbcCatalog = new JdbcCatalog(catalogName, defaultDatabase, username, pwd, baseUrl);
bsTableEnv.registerCatalog("mycatelog", jdbcCatalog);
bsTableEnv.useCatalog("mycatelog");
Table table = bsTableEnv.sqlQuery("SELECT * FROM my_schema.table-name" );
DataStream<Row> rowDataStream = bsTableEnv.toAppendStream(table, Row.class);
rowDataStream.print();
bsEnv.execute("test");
以上代码,执行后将报如下错误:
Exception in thread "main" org.apache.flink.table