flink数据集API中的多个顺序接收器

时间:2019-10-10 07:06:06

标签: elasticsearch apache-flink

我正在尝试在需要的flink中实现批处理数据处理管道

  1. 读取具有超过9000万行的文件
  2. 执行一些转换
  3. 通过弹性搜索发布数据
  4. 将带有一些元数据的通知发布到下游系统,说明该工作已完成,并且可以读取弹性搜索中的内容

问题1:我没有找到任何简单的方法来将数据发布到elasticsearch,flink数据集API中没有提供开箱即用的输出功能来将数据发布到elasticsearch,只有我能找到的选择是写文件或实现自定义功能

问题2:要解决问题1,我正在将数据发布到map函数中的elasticsearch中。 Map运算符使用并行性4定义。我正在定义并行度1的输出函数,但我不知道所有运算符实例何时完成处理,以便我可以在下游发布消息。

我不想发送有关该主题的每个事件的通知,而是要发送有关该主题的一条消息,以确认所有9000万行都已处理,并且消费者现在可以从elasticsearch查询数据。

有什么办法解决这个问题?

第二次在map函数中编写elasticsearch似乎不是对的,不是转换,而是输出,因为我在这里需要2个连续的接收器,有没有更清洁的方法呢? 下面是示例流程图

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为解决您案件的最佳方法是

  1. 将文件加载到表
  2. 将表转换为DataStream,您可以使用表API或在转换后操作数据。
  3. 使用elastic Connector
  4. 插入数据以保持弹性

如果您想了解工作是否完成,可以检查numRecordsOutPerSecond指标。