在Dataflow中自动检测BigQuery架构?

时间:2017-04-29 00:11:57

标签: google-bigquery google-cloud-dataflow apache-beam

是否可以在DataFlow中使用等效的--autodetect

即。我们可以在不指定架构的情况下将数据加载到BQ表中,相当于我们如何使用--autodetect从CSV加载数据?

potentially related question

2 个答案:

答案 0 :(得分:7)

如果您在PCollections中使用protocol buffers作为对象(应该在Dataflow后端上执行得非常好),您可能可以使用我过去编写的工具。它将在运行时根据对protobuffer描述符的检查将protobuffer的模式解析为BigQuery模式。

我很快将其上传到GitHub,这是WIP,但您可以使用它或受到启发,使用Java Reflection编写类似内容(我可能会在某些时候自己编写)。

您可以按如下方式使用util:

TableSchema schema = ProtobufUtils.makeTableSchema(ProtobufClass.getDescriptor());
enhanced_events.apply(BigQueryIO.Write.to(tableToWrite).withSchema(schema)
            .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)
            .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE));

其中create配置将创建具有指定模式的表,ProtobufClass是使用Protobuf模式和proto编译器生成的类。

答案 1 :(得分:0)

我不确定从BQ读书,但是对于写作,我认为这样的东西适用于最新的java SDK。

Toolbar