Apache Beam流处理json数据

Ste*_*lla 2 java apache-beam

我正在分析Apache Beam数据流处理。我从事过Apache Kafka流处理(生产者,消费者等)的工作。我现在想将其与Beam进行比较。

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

{"UserID":"1","Address":"XXX","ClassNo":"989","UserName":"Stella","ClassType":"YYY"}
Run Code Online (Sandbox Code Playgroud)

有人可以指导我或通过示例链接指导我吗?

Ant*_*ton 5

这样做有多个方面:

  • 首先,您需要确定数据来自何处:
    • 您需要在Beam管道中使用某种IO,请参见此处
    • 有很多内置的IO,请参见此处的列表;
    • 通过使用上述链接中的IO,您可能会获得包含这些JSON对象的字符串流;
    • 一些IO可以本地解析Avro和其他格式(PubsubIO),这取决于特定的IO实现;
  • 那么您可能需要转换数据:

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