结构化流 - 在同一批次中按消息键运行不同的功能

时间:2018-05-13 15:17:44

标签: python apache-spark pyspark apache-kafka spark-structured-streaming

我在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()

感谢您的帮助

0 个答案:

没有答案