BigQueryIO читать получить TableSchema - PullRequest
0 голосов
/ 09 мая 2018

Что я хочу сделать, это прочитать существующую таблицу и сгенерировать новую таблицу, которая имеет ту же схему, что и исходная таблица, плюс несколько дополнительных столбцов (вычисленных по некоторым столбцам исходной таблицы). Исходная схема таблицы может быть увеличена без уведомления (поля, которые я использую в своем задании потока данных, не изменится), поэтому я хотел бы всегда читать схему вместо определения какого-либо пользовательского класса, который содержит схему.

В Dataflow SDK 1.x я могу получить TableSchema через

final DataflowPipelineOptions options = ...
final String projectId = ...
final String dataset = ...
final String table = ...

final TableSchema schema = new BigQueryServicesImpl()
    .getDatasetService(options)
    .getTable(projectId, dataset, table)
    .getSchema();

Для Dataflow SDK 2.x BigQueryServicesImpl стал закрытым пакетом.

Я прочитал ответы в Получить TableSchema из результата BigQuery PCollection , но я бы предпочел не делать отдельный запрос к BigQuery. Поскольку этому ответу уже почти 2 года, есть ли другие мысли или идеи от сообщества SO?

1 Ответ

0 голосов
/ 09 мая 2018

Из-за того, как сейчас настроен BigQueryI / O. Он должен запросить схему таблицы, прежде чем пиплейн начнет работать. Это хорошая идея, но ее невозможно реализовать в одном конвейере. В примере, который вы связали, схема таблицы представляет собой запросы перед запуском конвейера.

Если добавляются новые столбцы, к сожалению, новый конвейер должен быть перезапущен.

...