【问题标题】:Rename TableRow Attribute Names重命名 TableRow 属性名称
【发布时间】:2018-05-30 22:57:06
【问题描述】:

我已从源 REST 端点读取 JSON,并正在写入 BigQuery 表。我想让 BigQuery 表属性更具可读性,即。从 src_lat 到 source_latitude 等...

我已经设法创建了一个符合目的的 TableSchema 定义,我的问题是如何将 TableRow 定义从源映射到新的目标属性?

【问题讨论】:

  • 列可以在解析 JSON 时重新映射,也可以使用 hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/…
  • 感谢您的反馈 我对这个很陌生,并且已经有 15 年没有编写 Java 代码了!这个挑战是我自己没有解析 JSON,而是使用预构建的方法来完成它。 return Transport.getJsonFactory().fromString(input.replace("'", "\""), TableRow.class); 所以我希望它可以用生成的 ? 来完成

标签: java json google-bigquery google-cloud-dataflow


【解决方案1】:

参见JsonFactory.parse()https://developers.google.com/api-client-library/java/google-http-java-client/reference/1.20.0/com/google/api/client/json/CustomizeJsonParser 的组合...这允许自定义解析器,以便解析成具有不同字段名称的目标对象类。您必须extend CustomizeJsonParser 并实现handleUnrecognizedKey 方法,该方法正在为所有无法直接映射的字段键调用,然后正确地重新映射这些字段,例如。在switch 声明中。

也可以使用 Jackson Streaming API 重新映射字段,请参阅example

【讨论】:

    猜你喜欢
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 2016-08-12
    • 2017-12-13
    • 1970-01-01
    • 2019-01-17
    • 2021-05-20
    相关资源
    最近更新 更多