gpt4 book ai didi

java - 在 Google DataFlow 中创建复杂的 BigQuery 架构 (java)

转载 作者:行者123 更新时间:2023-12-02 09:35:03 26 4
gpt4 key购买 nike

我有一个无限的复杂对象流,我想将其加载到 BigQuery 中。这些对象的结构代表了 BigQuery 中目标表的架构。

问题是,由于POJO中有很多嵌套字段,所以它是extremely tedious task将其转换为 TableSchema 对象,并且我正在寻找一种快速/自动化的方法,在写入 BigQuery 时将 POJO 转换为 TableSchema 对象。

我对 Apache Beam API 不太熟悉,如果有任何帮助,我们将不胜感激。

最佳答案

在管道中,我从 GCS 加载架构列表。我将它们保留为字符串格式,因为 TableSchema 不可序列化。但是,我将它们加载到 TableSchema 中以验证它们。然后我将它们以字符串格式添加到选项对象中的 map 中。

String schema = new String(blob.getContent());
// Decorate list of fields for allowing a correct parsing
String targetSchema = "{\"fields\":" + schema + "}";
try {
//Preload schema to ensure validity, but then use string version
Transport.getJsonFactory().fromString(targetSchema, TableSchema.class);

String tableName = blob.getName().replace(SCHEMA_FILE_PREFIX, "").replace(SCHEMA_FILE_SUFFIX, "");
tableSchemaStringMap.put(tableName, targetSchema);
} catch (IOException e) {
logger.warn("impossible to read schema " + blob.getName() + " in bucket gs://" + options.getSchemaBucket());
}

当我开发这个时,我没有找到其他解决方案。

关于java - 在 Google DataFlow 中创建复杂的 BigQuery 架构 (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57590023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com