我在PySpark中实现了Kafka消费者(Spark 2.2.1)
我正在使用结构化流媒体技术。
每个接收批处理都包含消息,其中值列来自不同类型(通过键区分),并且其架构不同。
现在,我想根据消息列键在值列上运行不同的逻辑。
如何(按键)对收到的消息进行分组,并为PySpark中的每个组运行特定的逻辑?
以下是我的代码中的代码段,当所有消息属于同一类型时,它会起作用:
lines = spark.readStream.format("kafka")...
schema_struct = get_schema_struct(...)
udf_identical_func = udf(
lambda k,msg: do_something_identical_to_all_types(k,msg)), schema_struct
)
res = lines.select(udf_identical_func("key","value"))
udf_specific_toEach_type_func = udf(
lambda k,msg: do_something_specific_to_each_type(k,msg)), schema_struct
)
res= res.select(udf_specific_toEach_type_func)
q = res.writeStream....
q.awaitTermination()
感谢您的帮助