重命名 TableRow 属性名称

Posted

技术标签:

【中文标题】重命名 TableRow 属性名称【英文标题】:Rename TableRow Attribute Names 【发布时间】: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); 所以我希望它可以用生成的 ? 来完成 【参考方案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。

【讨论】:

以上是关于重命名 TableRow 属性名称的主要内容,如果未能解决你的问题,请参考以下文章

可以安全地设置“产品名称”属性还是应该重命名目标

解构和重命名属性

XSLT 用属性值重命名元素

名称以两个下划线开头的实例属性被奇怪地重命名了

在 node.js 中重命名 json 对象名称

如何在 HIVE 的分区中重命名文件