2

Apache Beam 的 TextIO 可用于读取某些文件系统中的 JSON 文件,但如何从 Java SDK 中的 HTTP 响应产生的大型 JSON (InputStream) 创建 PCollection?

4

1 回答 1

0

我认为 Beam 目前没有通用的内置解决方案来执行此操作,请参阅支持的 IO 列表

我可以想到多种方法来解决这个问题,无论哪种方法适合您,都可能取决于您的要求:

  • 我可能会首先尝试构建另一个层(可能不在 Beam 中),将 HTTP 输出保存到 GCS 存储桶中(可能在此过程中将其拆分为多个文件),然后使用 Beam 的 TextIO 从 GCS 存储桶中读取;
  • 根据 HTTP 源的属性,您可以考虑:
    • 编写您自己的ParDo,在一个步骤中读取整个响应,将其拆分并分别输出拆分元素。然后进一步的转换将解析 JSON 或做其他事情;
    • 实现你自己的 source,这会更复杂,但对于非常大(无界)的响应可能会更好;
于 2018-11-07T23:22:19.947 回答