我无法在Google的Dataflow模板中指定TableSchema来读取发布订阅并流式传输到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")));
这是我尝试编译时遇到的错误。
[错误]无法执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.6.2:compile (默认编译)在项目google-cloud-teleport-java上:编译 失败[ERROR] /home/jquattlebaum/DataflowTemplates/src/main/java/com/google/cloud/teleport/templates/PubSubToBigQuery.java:[131,5] 找不到符号[ERROR]符号:类TableSchema [ERROR]
位置:类com.google.cloud.teleport.templates.PubSubToBigQuery
答案 0 :(得分:0)
当您没有正确设置依赖项时,通常会发生这种情况。即您的项目(模板)必须声明一个定义为TableSchema
的依赖项,然后您必须在java文件(PubSubToBigQuery.java
)中添加相应的import语句。
依赖声明可能发生在pom.xml
中,如果您没有做太多修改,它应该已经包含TableSchema
库https://github.com/GoogleCloudPlatform/DataflowTemplates/blob/master/pom.xml#L258 google-api-services-bigquery
的正确依赖。
如果有,请确保import com.google.api.services.bigquery.model.TableSchema
顶部有PubSubToBigQuery.java
。
然后确保您执行mvn clean
或从IDE中清除项目,然后再次构建。
如果这没有帮助,我会在某个地方找错字。