Apache Beam 架构原理及应用实践,还没搞懂Java中的路径

我们以 kafka 为例,看一下 Kafka-client 对版本的依赖情况,从图中可以看出 beam 2.6.0 版本的 api 改变基本是稳定的。当然,现在用的比较多的2.4、2.5版本。吐个槽,2.6版本之前的兼容性问题,上个版本还有这个类或方法,下一个版本就没有了,兼容性不是很好。

4. SDK beam-sdks-java-io-kafka 读取源码剖析

① 指定 KafkaIO 的模型,从源码中不难看出这个地方的 KafkaIO<K,V> 类型是 Long 和 String 类型,也可以换成其他类型。

pipeline.apply(KafkaIO.<Long, String>read() pipeline.apply(KafkaIO.<Long, String>read()

② 设置 Kafka 集群的集群地址。

.withBootstrapServers(“broker_1:9092,broker_2:9092”)

③ 设置 Kafka 的主题类型,源码中使用了单个主题类型,如果是多个主题类型则用 withTopics(List) 方法进行设置。设置情况基本跟 Kafka 原生是一样的。

.withTopic(“my_topic”) // use withTopics(List) to read from multiple topics.

④ 设置序列化类型。Apache Beam KafkaIO 在序列化的时候做了很大的简化,例如原生 Kafka 可能要通过 Properties 类去设置 ,还要加上很长一段 jar 包的名字。

Beam KafkaIO 的写法:

.withKeyDeserializer(LongDeserializer.class)

.withValueDeserializer(StringDeserializer.class)

原生 Kafka 的设置:

Properties props = new Properties();

props.put(“key.deserializer”,“org.apache.kafka.common.serialization.ByteArrayDeserializer”);

props.put(“value.deserializer”,“org.apache.kafka.common.serialization.ByteArrayDeserializer”);

⑤ 设置 Kafka 的消费者属性,这个地方还可以设置其他的属性。源码中是针对消费分组进行设置。

.updateConsumerProperties(ImmutableMap.of(“group.id”, my_beam_app_1"))

⑥ 设置 Kafka 吞吐量的时间戳,可以是默认的,也可以自定义。

.withLogAppendTime()

⑦ 相当于 Kafka 中 “isolation.level” , “read_committed”,指定 KafkaConsumer 只应读取非事务性消息,或从其输入主题中提交事务性消息。流处理应用程序通常在多个读取处理写入阶段处理其数据,每个阶段使用前一阶段的输出作为其输入。通过指定 read_committed 模式,我们可以在所有阶段完成一次处理。针对 “Exa

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值