Я новичок в мире конвейеров и Google API DataFlow.
Я хочу читать данные из BigQuery с помощью sqlQuery. Когда я читаю всю базу данных, она работает нормально.
PipelineOptions options = PipelineOptionsFactory.create();
Pipeline p = Pipeline.create(options);
PCollection<TableRow> qData = p.apply(
BigQueryIO.Read
.named("Read")
.from("test:DataSetTest.data"));
Но когда я использую fromQuery, у меня возникает ошибка.
PipelineOptions options = PipelineOptionsFactory.create();
Pipeline p = Pipeline.create(options);
PCollection<TableRow> qData = p.apply(
BigQueryIO.Read
.named("Read")
.fromQuery("SELECT * FROM DataSetTest.data"));
Ошибка:
Исключение в потоке «main» java.lang.IllegalArgumentException: проверка запроса «SELECT * FROM DataSetTest.data» не удалась. Если запрос зависит от более раннего этапа конвейера, эту проверку можно отключить с помощью #withoutValidation.
в com.google.cloud.dataflow.sdk.io.BigQueryIO $ Read $ Bound.dryRunQuery (BigQueryIO.java:449)
в com.google.cloud.dataflow.sdk.io.BigQueryIO $ Read $ Bound.validate (BigQueryIO.java:432)
в com.google.cloud.dataflow.sdk.Pipeline.applyInternal (Pipeline.java:357)
в com.google.cloud.dataflow.sdk.Pipeline.applyTransform (Pipeline.java:267)
в com.google.cloud.dataflow.sdk.values.PBegin.apply (PBegin.java:47)
в com.google.cloud.dataflow.sdk.Pipeline.apply (Pipeline.java:151)
в Test.java.packageid.StarterPipeline.main (StarterPipeline.java:72)
Вызвано: java.lang.NullPointerException: необходимо указать обязательный параметр projectId.
на com.google.api.client.repackaged.com.google.common.base.Preconditions.checkNotNull (Preconditions.java:229)
в com.google.api.client.util.Preconditions.checkNotNull (Preconditions.java:140)
в com.google.api.services.bigquery.Bigquery $ Jobs $ Query. (Bigquery.java:1751)
в com.google.api.services.bigquery.Bigquery $ Jobs.query (Bigquery.java:1724)
в com.google.cloud.dataflow.sdk.io.BigQueryIO $ Read $ Bound.dryRunQuery (BigQueryIO.java:445)
... еще 6
В чем проблема?
ОБНОВИТЬ:
Устанавливаю проект "options.setProject".
PipelineOptions options = PipelineOptionsFactory.create();
Pipeline p = Pipeline.create(options);
options.setProject("test");
PCollection<TableRow> qData = p.apply(
BigQueryIO.Read
.named("Read")
.fromQuery("SELECT * FROM DataSetTest.data"));
Но теперь я получил это сообщение. Таблица не найдена.
Вызвано: com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found {"code": 404, "errors": [{"domain": "global", "message": "Not found: Table test: _dataflow_ Contemporary_dataset_737099.dataflow_ Contemporary_table_550832 "," cause ":" notFound "}]," message ":" Not found: Table test: _dataflow_ Contemporary_dataset_737099.dataflow_ Contemporary_table_550832 "}