重命名 Apache Apex 应用程序时,Kafka 运算符语义会发生变化吗?
Posted
技术标签:
【中文标题】重命名 Apache Apex 应用程序时,Kafka 运算符语义会发生变化吗?【英文标题】:Will Kafka operator semantic change when I rename an Apache Apex application? 【发布时间】:2016-04-28 15:54:42 【问题描述】:假设我们重命名应用程序的那一刻,Kafka 运算符的语义将完全改变并且可能最终由应用程序代码从“initialOffset”读取,我是否正确?
如何维护“应用程序名称”定义的语义?
应用程序代码的每次部署都会产生一个新的应用程序,还是只是使用@ApplicationAnnotation(name="") 实例来定义这个含义?
【问题讨论】:
【参考方案1】:您始终可以使用 -originalAppId 启动应用程序,操作员应从原始应用程序停止的位置继续。如果您使用的是 kafka 0.9 运算符并启动同名应用程序,则可以将 initialOffset 设置为“application_or_latest”或“application_or_earliest”,因此运算符应从上次运行中处理的偏移量继续。不同之处在于,如果您指定 -originalAppId,则偏移量将从检查点恢复,而另一个将偏移量存储在 kafka 本身中。
【讨论】:
【参考方案2】:您可以使用-originalAppId
参数从其先前状态启动应用程序,并从其先前运行的检查点状态提供纱线应用程序ID,它应适用于dag 中的所有运算符,包括kafka 输入运算符。您还可以使用属性dt.attr.APPLICATION_NAME
为应用程序提供一个新名称。
例如:
launch pi-demo-3.4.0-incubating-SNAPSHOT.apa -originalAppId application_1459879799578_8727 -Ddt.attr.APPLICATION_NAME="pidemo v201"
【讨论】:
以上是关于重命名 Apache Apex 应用程序时,Kafka 运算符语义会发生变化吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何重命名/替换 Kafka-connect SMT 结构中的字段?