【问题标题】:Custom Watermarks with Apache Flink使用 Apache Flink 自定义水印
【发布时间】:2018-06-24 21:44:11
【问题描述】:

我正在研究可以插入数据流的水印类型。

虽然这可能超出了水印的目的,但我还是会问的。

您能否创建一个包含时间戳和 k/v 对 (this=that, that=this) 的水印?

因此水印将保留{12DEC180500GMT,this=that, that=this}

或者

{Timestamp, kvp1, kvp2, kvpN}

这样的事情可能吗?我已经查看了用户和 API 文档,但可能忽略了一些内容

【问题讨论】:

  • 我不相信 API 旨在适应这种情况,但也许如果您解释一下为什么您会发现这很有用,您会想到一个替代实现。
  • @DavidAnderson 希望我添加的图表和评论将有助于澄清。 drive.google.com/file/d/…
  • 该驱动器文件不可公开访问。
  • @DavidAnderson 现在可以使用了。
  • @DavidAnderson,刚刚更改了设置以允许知道链接的任何人访问。

标签: apache-flink


【解决方案1】:

不,Flink 中的 Watermark 类 (在发现 flink/flink-streaming/java/src/main/java/org/apache/flink/streaming/api/watermark/Watermark.java) 除了 MAX_WATERMARK 之外,还有一个实例变量,即

/** The timestamp of the watermark in milliseconds. */
private final long timestamp;

所以水印除了时间戳之外不能携带任何信息,时间戳必须是长值。

【讨论】:

  • 这是实际答案。我想知道这是否有用
  • 根据 this 和 that 的值的来源,有多种方法可以访问数据。如果数据来自流中的事件,则可以在需要时从事件中提取。如果它们是常量变量,它们可以在代码的其他地方定义并使用。如果它们是动态值,您可以创建一个不同的 this 和 that 值的流,并将其连接到您的原始字符串。您是否在考虑其他情况?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多