如何使用 Glue 将 struct 列映射到 RDS postgres 中的 jsonb 列

问题描述 投票:0回答:1
  1. S3中的原始json文件。例如:Table "customer_s3", {"id":1, "name":"Bob","address":{"state":"TX", "city":"Austin"}}
  2. 我使用Glue爬虫从S3中的json文件创建一个目录表“customer_from_s3”,在这个目录表中,一列(“地址”)的数据类型是struct。
  3. 我使用 Glue 创建与 RDS Postgres 的连接,并创建一个爬网程序以从 RDS Postegres 数据库获取表“customer_rds”的架构。模式:“id”:int,“name”:string,“address”:jsonb。
  4. 然后我想使用 Glue ETLJobs 从 S3 中的“customer_s3”json 文件读取数据,进行转换(这里我什么都不做),然后将数据保存到 RDS Postgres 中的“customer_rds”表中,

问题:我无法使用 Glue ETLJobs 将“地址”列(类型:struct)(来自胶水中的“customer_from_s3”目录表)映射到 RDS Postgress 作为“地址”列(jsonb)。

有什么解决办法吗?

我尝试使用 Glue Visual ETL 作业创建 ETL 作业来完成这项工作,但由于

WriteDynamicFrame. Can't get JDBC type for struct

而失败了

示例 原始数据: {"id":1, "name":"Bob","address":{"state":"TX", "city":"奥斯汀"}} 决赛桌如下:

|id|姓名|地址|

|1 |“鲍勃”| {“州”:“德克萨斯州”,“城市”:“奥斯汀”}|

所以我希望当我存储到数据库时地址列的所有内容都保持不变,但数据类型是jsonb。

json amazon-rds aws-glue
1个回答
0
投票

我尝试的是将

address
列的数据类型设置为胶水中的字符串,并在RDS数据库中,在数据库中,运行另一个程序将
address
列的字符串类型转换为jsonb。

但我不得不说,这不是一个好主意。它增加了在数据库中执行的更多时间,而且我仍然不知道如何在数据库中将结构类型转换为 jsonb。

© www.soinside.com 2019 - 2024. All rights reserved.