Spark Streamming:从具有多个模式的kafka读取数据

时间:2017-10-24 07:13:22

标签: apache-spark apache-kafka spark-streaming apache-spark-dataset

我正在努力解决火花流中的实现问题。

来自kafka的消息看起来像这样但有更多字段

{"event":"sensordata", "source":"sensors", "payload": {"actual data as a json}}
{"event":"databasedata", "mysql":"sensors", "payload": {"actual data as a json}}
{"event":"eventApi", "source":"event1", "payload": {"actual data as a json}}
{"event":"eventapi", "source":"event2", "payload": {"actual data as a json}}

我正在尝试从Kafka主题(具有多个模式)中读取消息。我需要阅读每条消息并查找事件和源字段,并决定将其存储为数据集的位置。实际数据在字段有效负载中作为JSON,它只是一条记录。

有人可以帮助我实施这个或任何其他替代方案吗?

在同一主题中发送包含多个模式的消息并使用它是一种好方法吗?

提前致谢,

2 个答案:

答案 0 :(得分:1)

您可以从传入的JSON对象创建0.1234567

创建JSON对象的responseJson.stores.sort(function(a, b) { return (a.name.toUpperCase() < b.name.toUpperCase()) ? -1 : (a.name.toUpperCase() > b.name.toUpperCase()) ? 1 : 0; });

使用val Dataframe

在您选择的Seq[Sring]上执行操作。

答案 1 :(得分:0)

如果您只关心某些列

,请将JsonString转换为JavaBean