是否可以在DataFlow中使用等效的--autodetect
?
即。我们可以在不指定架构的情况下将数据加载到BQ表中,相当于我们如何使用--autodetect
从CSV加载数据?
答案 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