如何使用Flink在Postgresql中读取表格

时间:2018-06-21 09:23:01

标签: postgresql apache-flink

我想对Postgresql中的数据使用Flink进行一些分析。我应该如何以及在何处提供端口地址,用户名和密码。我正在尝试链接中提到的表源:https://ci.apache.org/projects/flink/flink-docs-release-1.4/dev/table/common.html#register-tables-in-the-catalog

final static ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
final static TableSource csvSource = new CsvTableSource("localhost", port);

我实际上无法开始。我浏览了所有文档,但未找到有关此文档的详细报告。

2 个答案:

答案 0 :(得分:0)

引用到您共享的链接的表和目录是Flink的SQL支持的一部分,您可以在其中使用SQL来表示要对提取到Flink中的数据执行的计算(查询)。这不是关于将Flink连接到数据库,而是关于使Flink表现得像数据库一样。

据我所知,Flink没有Postgres源连接器。有一个JDBC表接收器,但它仅支持附加模式(通过INSERT)。

CSVTableSource用于从CSV文件读取数据,然后可以由Flink处理。

如果要批量处理数据,可以采取的一种方法是将数据从Postgres导出到CSV,然后使用CSVTableSource将其加载到Flink中。另一方面,如果您希望建立流连接,则可以将Postgres连接到Kafka,然后使用Flink的Kafka连接器之一。

答案 1 :(得分:0)

据我所知,不支持直接读取 Postgres 实例。但是,您可以通过使用 Kafka 服务器和从 Postgres 复制到 Kafka 的 Debezium 实例获得 Postgres 更改的实时流式传输。

Debezium 在 DB 端使用原生 Postgres 复制机制进行连接,并在 Kafka 端将所有记录插入、更新或删除作为消息发出。然后,您可以使用 Kafka 主题作为您在 Flink 中的输入。

相关问题