如何在Apache Beam中从HTTP响应读取大文件?

时间:2018-11-04 03:16:31

标签: apache-beam apache-beam-io

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

1 个答案:

答案 0 :(得分:0)

我不认为see the list of supported IOs目前在Beam中没有通用的内置解决方案。

我可以想到多种解决方法,哪种对您有效,取决于您的要求:

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