目前,我正在尝试使用Apache Flink处理ETL。在项目中,有几个过程需要查询维度表以从CityName
转换为CityID
。项目结构如下:
Project---------------------
|
---- Company ETL (CityName column map to CityId)
|
---- Employee ETL (CityName column map to CityId)
目前,对于每个流,我们的方法是在MySQL上调用jdbc查询操作,其中维度表位于。这不是一种有效的方法,我想问一下,有一种方法可以将维度表内容保留在Flink内部,并且能够在项目范围内使用。
答案 0 :(得分:0)
如果您在翻译表需要更新时不介意重新启动应用程序,这听起来很合理。但是,如果您正在寻找替代方案,则可以在转换表中添加更新内容,然后使用RichCoMap
或RichCoFlatMap
进行翻译。您可以将翻译表存储为state managed by Flink。从Flink的角度来看,翻译表可能是整体ValueState
的一大块,或者在Flink 1.3中,您可以使用MapState
(docs)。