2015-04-03 1 views
1

У меня есть PCollection совпадающих имен файлов GCS, каждый из которых содержит один сжатый JSON blob. Каков наилучший способ прочитать весь файл, распаковать его (формат Gzip) и JSON декодировать его?Лучший способ обработки файла GCS в потоке данных?

  • TextIO действительно близко, но считывает данные в строке.
  • GCS API предлагает пример для how to read the entire file, но он не обрабатывает декомпрессию и заставляет меня переопределить множество функциональных возможностей ядра.

Есть ли существующие API и/или примеры, которые могут дать мне начало? Похоже, это будет довольно распространенный случай использования.

+0

Позвольте мне убедиться, что я понимаю вопрос - в идеале вам бы хотелось что-то вроде: JsonIO.Read.from (myFileName) .withCompressionType (JsonIO.CompressionType.GZIP) - это правильно? –

+0

Да, и файл является объектом GCS (gs: //bucket/file.json.gz). – igrigorik

ответ

2

Это не поддерживается в Dataflow. Чтобы выполнить чтение блоб JSON из файла, вы могли бы реализовать FileBasedSource:

https://cloud.google.com/dataflow/java-sdk/JavaDoc/com/google/cloud/dataflow/sdk/io/FileBasedSource

Если этого достаточно, чтобы начать работу, мы можем продолжать обновлять этот ответ с более подробной информацией.

+0

Любые советы по наилучшему способу распаковки содержимого? Есть ли gzip-кодер или некоторые такие? – igrigorik

+0

Можете ли вы смоделировать решение, основанное на обработке TextIO GZIP? https://github.com/GoogleCloudPlatform/DataflowJavaSDK/blob/master/sdk/src/main/java/com/google/cloud/dataflow/sdk/io/TextIO.java –

Смежные вопросы