目前,我正在尝试使用 Apache Flink 处理 ETL。在项目中,需要查询一个维度表才能从CityName
转换为CityID
。项目结构如下:
Project---------------------
|
---- Company ETL (CityName column map to CityId)
|
---- Employee ETL (CityName column map to CityId)
目前,对于每个流,我们的方法是在维度表所在的 MySQL 上调用 jdbc 查询操作。这不是一个有效的方法,我想问一下有没有一种方法可以将维度表内容保留在 Flink 内部并能够在项目范围内使用。
如果您不介意在转换表需要更新时重新启动应用程序,这听起来很合理。但是,如果您正在寻找替代方案,则可以在翻译表中流式传输以及更新,并使用RichCoMap
或RichCoFlatMap
对翻译执行。您可以将转换表存储为 Flink 管理的状态。从 Flink 的角度来看,翻译表可能是一块单片ValueState
,或者在 Flink 1.3 中你可以使用 MapState
(文档(。