【问题标题】:Flink reference data advice/best practiceFlink 参考数据建议/最佳实践
【发布时间】:2017-12-17 03:48:58
【问题描述】:

寻找一些关于在哪里存储/访问 Flink 参考数据的建议。这里的用例非常简单——我有一个包含国家列表的单列文本文件。我正在流式传输推特数据,然后根据推文的(解析的)位置字段匹配文本文件中的国家/地区。在 IDE (Eclipse) 中,这一切都很好,因为当例程通过我的 Flink Mapper 中的静态 Build 方法(即实现 Flinks MapFunction)启动时,我填充了一个静态 ArrayList。这个类现在是内部静态的,否则它会在序列化时得到衬衫。重点是,当在运行时从流中调用覆盖的 map 函数时,国家数据的静态数组正在等待、完全填充并准备好进行匹配。很有魅力。但是,当部署到 Flink 集群中时(上周我花了很多时间才真正得到代码来查找文本文件),该数组作为 Build 方法的一部分填充。在使用时,数据神秘地消失了,我的数组大小为 0。(因此,找不到很多匹配项。因此,有两个问题 - 为什么它在 Eclipse 中工作而不是在部署时工作(渲染很多 Eclipse 单元测试也毫无意义)。或者更一般地说,在 Flink 中交叉引用这种静态、固定引用数据的正确方法是什么?(并且在 Eclipse 和集群...)

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:

    处理静态引用数据的标准方法是在RichMapFunction or RichFlatMapFunctionopen 方法中加载数据。丰富的函数具有 openclose 方法,这些方法对于创建和完成本地状态很有用,并且可以访问运行时上下文。

    【讨论】:

    • 完美。将填充参考数据的“构建”方法移动到 RichMapFunction 的“打开”方法中,一切正常。 (反思一下,我认为将其转移到某种预 Flink 处理中可能会更好,因此 ref 数据已经是 Flink 首先从 Kafka 消费的数据的一部分 - 但它仍然非常好用。
    猜你喜欢
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    相关资源
    最近更新 更多