2

Я новичок в Google Dataflow и не могу заставить эту работу работать с JSON. Я читал всю документацию, но не могу решить свою проблему.Чтение файла JSON с помощью BigQuery для создания таблицы

Так, следуя пример WordCount я фигурировал как данные загружаются из CSV-файла с следующей строкой

PCollection<String> input = p.apply(TextIO.Read.from(options.getInputFile())); 

где файл_ввод в CSV-файл с моего gcloud ведра. Я могу преобразовать строки чтения из .csv с:

PCollection<TableRow> table = input.apply(ParDo.of(new ExtractParametersFn())); 

(Извлечь параметры, определенные мной). Все идет нормально!


Но тогда я понимаю, мой файл .csv слишком велик, и должен был преобразовать его в формат JSON (https://cloud.google.com/bigquery/preparing-data-for-bigquery). Поскольку BigQueryIO якобы лучше для чтения JSON, я попытался с помощью следующего кода:

PCollection<TableRow> table = p.apply(BigQueryIO.Read.from(options.getInputFile())); 

(файл_ввод затем JSON-файл и выход при чтении с BigQuery является PCollection с TableRows) Я попытался с TextIO слишком (который возвращает PCollection со строками), и ни один из двух вариантов ввода-вывода не работает.

Что мне не хватает? Документация на самом деле не так подробно, чтобы найти ответ там, но, возможно, некоторые из вас, ребята, уже рассматривали эту проблему раньше?

Любые предложения были бы очень признательны. :)

+0

afaik Ваши строки входного файла должны быть разделены как строки (возврат каретки) im не уверены, что вы можете сделать это с помощью json –

+0

Когда вы говорите, что не работает ... он сработает? Возвращает неверные данные? Какую ошибку вы видите и т. Д.? – Patrice

ответ

3

Я считаю, что есть два варианта, чтобы рассмотреть:

  1. Использование TextIO с TableRowJsonCoder глотать файлы в формате JSON (например, как это делается в TopWikipediaSessions example);
  2. Импортируйте файлы JSON в таблицу bigquery (https://cloud.google.com/bigquery/loading-data-into-bigquery), а затем используйте BigQueryIO.Read для чтения из таблицы.