Как читать большие файлы из HTTP-ответа в Apache Beam? - PullRequest
0 голосов
/ 04 ноября 2018

Apache Beam TextIO можно использовать для чтения файлов JSON в некоторых файловых системах, но как я могу создать PCollection из большого JSON (InputStream), полученного в результате ответа HTTP в Java SDK?

1 Ответ

0 голосов
/ 08 ноября 2018

Не думаю, что в Beam сейчас есть универсальное встроенное решение для этого, см. Список поддерживаемых операций ввода-вывода .

Я могу придумать несколько подходов к этому, в зависимости от того, что работает для вас, может зависеть от ваших требований:

  • Я бы, вероятно, сначала попытался бы создать другой слой (возможно, не в Beam), который сохранит вывод HTTP в корзину GCS (возможно, разбив его на несколько файлов в процессе), а затем использовать TextIO Beam для чтения из корзины GCS;
  • в зависимости от свойств источника HTTP, который вы можете рассмотреть:
    • написание собственного ParDo, который считывает весь ответ за один шаг, разделяет его и выводит разделенные элементы отдельно. Затем дальнейшие преобразования будут анализировать JSON или делать другие вещи;
    • реализация вашего собственного источника , который будет более сложным, но, вероятно, лучше подойдет для очень больших (неограниченных) ответов;
...