当前spark最新版本是2.4.0,以该版本为例,详细的文档链接是structured-streaming-kafka-integration
我们注意到kafka版本仅支持0.10
groupId = org.apache.spark
artifactId = spark-sql-kafka-0-10_2.11
version = 2.4.0
batch和stream模式都支持读写kafka
从代码片段可以看出
1、spark用到的参数不是kafka producer和consumer原生的配置参数
2、支持多topic,且支持topic名字正则方式
A、订阅配置和数据格式
Row的scheme我们自己使用kafka consumer消费数据的时候,大多数情况下只关注value,而spark将kafka中一条message相关的一些元数据信息,比如offset,timestamp,key等也都跟value一起作为“一行”数据暴露给你处理,这是需要特别注意的地方。
spark重新定义了一些kafka配置项,我们必须按照它的要求,添加配置
必须项其实是2个:
assign|subscribe|subscribePattern 任选一个
kafka.bootstrap.servers 必选
可选项比较多,具体含义自行翻译理解即可。
A、写kafka配置和数据格式
写数据格式注意点:
1、topic要么配置,要么数据内容里要有topic字段。
2、value字段是必须要有的,topic如果没有配置也必须要有
3、key不是必须的,如果没有key字段,那么spark会设置key为null
kafka.bootstrap.servers
同样是必须的。
网友评论