Определение TableSchema в шаблоне PubSubToBigQuery - PullRequest
0 голосов
/ 20 мая 2019

У меня проблемы с указанием TableSchema в шаблоне Google Dataflow для чтения подписки pub-sub и потоковой передачи в BigQuery.
Шаблон предоставлен здесь - https://github.com/GoogleCloudPlatform/DataflowTemplates/blob/master/src/main/java/com/google/cloud/teleport/templates/PubSubToBigQuery.java

Для документации здесь - https://beam.apache.org/documentation/io/built-in/google-bigquery/#creating-a-table-schema

Я попытался добавить TableSchema, чтобы соответствовать моему назначению в BigQuery

/** Define Table Schema */
TableSchema schema = new TableSchema()
    .setFields(
        ImmutableList.of(
            new TableFieldSchema()
                .setName("device_id")
                .setType("STRING")
                .setMode("NULLABLE"),
            new TableFieldSchema()
                .setName("timestamp")
                .setType("TIMESTAMP")
                .setMode("NULLABLE"),
            new TableFieldSchema()
                .setName("orientation")
                .setType("FLOAT")
                .setMode("NULLABLE"),
            new TableFieldSchema()
                .setName("orientation")
                .setType("STRING")
                .setMode("NULLABLE"),
            new TableFieldSchema()
                .setName("light_level")
                .setType("FLOAT")
                .setMode("NULLABLE"),
            new TableFieldSchema()
                .setName("temperature")
                .setType("FLOAT")
                .setMode("NULLABLE"),
            new TableFieldSchema()
                .setName("button_pressed")
                .setType("BOOLEAN")
                .setMode("NULLABLE"),
            new TableFieldSchema()
                .setName("city")
                .setType("STRING")
                .setMode("NULLABLE"),
                new TableFieldSchema()
                .setName("region")
                .setType("string")
                .setMode("NULLABLE"),
            new TableFieldSchema()
                .setName("lat")
                .setType("STRING")
                .setMode("NULLABLE"),
            new TableFieldSchema()
                .setName("long")
                .setType("string")
                .setMode("NULLABLE")));

Вот ошибка, которую я получаю при попытке компиляции.

[ERROR] Failedвыполнить цель org.apache.maven.plugins: maven-compiler-plugin: 3.6.2: компилировать (default-compile) в проекте google-cloud-teleport-java: Ошибка компиляции [ERROR] / home / jquattlebaum / DataflowTemplates / src/main/java/com/google/cloud/teleport/templates/PubSubToBigQuery.java:[131,5] не удается найти символ [ОШИБКА] символ: класс TableSchema [ОШИБКА]
расположение: класс com.google.cloud.teleport.templates.PubSubToBigQuery

1 Ответ

0 голосов
/ 20 мая 2019

Нечто подобное обычно происходит, когда у вас неправильно настроены зависимости.Т.е. ваш проект (шаблон) должен объявить зависимость, которая имеет определение TableSchema, а затем вы должны добавить соответствующий оператор импорта в свой Java-файл (PubSubToBigQuery.java).

Объявление зависимости, вероятно, происходит вpom.xml и, если вы не сильно его изменили, она уже должна включать корректную зависимость для TableSchema, библиотеку google-api-services-bigquery: https://github.com/GoogleCloudPlatform/DataflowTemplates/blob/master/pom.xml#L258.

Если это так, убедитесь, что у вас есть import com.google.api.services.bigquery.model.TableSchema вверху PubSubToBigQuery.java.

Затем убедитесь, что вы делаете mvn clean или очистите проект от IDE, прежде чем строить его снова.

Если это не поможет, я бы посмотрелдля опечатки где-то.

...