Apache Beam流处理json数据

时间:2018-05-14 16:17:01

标签: java apache-beam

我正在分析Apache Beam流处理数据。我曾参与过Apache Kafka流处理(Producer,Consumer等)。我现在想把它与Beam进行比较。

我想以编程方式(Java)使用Apache Beam流式传输简单的json数据。

{"UserID":"1","Address":"XXX","ClassNo":"989","UserName":"Stella","ClassType":"YYY"}

有人可以指导我或指导我一个示例链接吗?

1 个答案:

答案 0 :(得分:4)

这有以下几个方面:

  • 首先,您需要确定数据的来源:
    • 您需要在Beam管道中使用某种IO,请参阅here;
    • 有一堆内置IO,请参阅列表here;
    • 通过使用上述链接中的IO,您可能会获得包含这些JSON对象的字符串流;
    • 一些IO可以原生解析Avro和其他格式(PubsubIO),这取决于具体的IO实现;
  • 然后您可能需要转换数据:

    • 您需要创建自己的PTransform,它处理从JSON字符串到Java类的转换:
      • 请参阅有关PTransforms here;
      • 的部分
    • 您可以看到此类转换here的示例:
      • 此JsonToRow PTransform接受带有JSON对象的字符串,并使用Jackson ObjectMapper将其转换为Beam Row;
      • 您可以自己尝试使用Row对象,也可以实现类似的转换,将JSON字符串转换为自定义Java类型而不是Row;
  • 您还可以查看Beam源中的examples folder;