通过 Glue 将 Snowflake 中的项目插入 DynamoDB 中

问题描述 投票:0回答:1

目前我正在编写一个脚本,该脚本从 Snowflake 查询数据并需要将其插入到胶水脚本中的 DDB 表中。 我可以使用雪花连接器从 Snowflake 轻松查询。我的桌子看起来像这样:

我的 DDB PK 将是 customer_id,其他字段将是任何对象(通常是 json 或数组)。

我已经尝试过:

  • 将从雪花加载的DynamicFrame直接插入DDB,如所示

  • 将 DynamicFrame 保存到 S3,加载“来自 S3 的 json 动态框架”(如 this

  • 将DynamicFrame转换为pandas,将其转换为json并以DDB json格式序列化(如

    {'M': {'"customer_id"': {'S': '79075d7c7276e61df7ca6615986f7d05464995245d3f9155f60467c0cb195cf1'}, '"non_personalized"': {'S': "{'Em Alta1': ['loja1', 'loja2', 'loja3']

    并将其返回给 DynamicFrame 并将其传递给 DDB 连接器。

所有选项都不起作用,并且总是给我以下错误:

An error occurred while calling o122.pyWriteDynamicFrame. The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: L7ASM29EH86UQBMKLL5KUF61VBVV4KQNSO5AEMVJF66Q9ASUAAJG; Proxy: null)

我看到连接器似乎有选项(onetwo)可以从DDB工作到关系表。我怎样才能有效地做到相反呢?

提前致谢。

python amazon-dynamodb snowflake-cloud-data-platform aws-glue
1个回答
0
投票

根据我最初的假设,我认为您的数据对于 DynamoDB 来说是错误的。根据您分享的内容:

{'M': {'"customer_id"': {'S': '79075d7c7276e61df7ca6615986f7d05464995245d3f9155f60467c0cb195cf1'}, '"non_personalized"': {'S': "{'Em Alta1': ['loja1', 'loja2', 'loja3']

您可以在这里看到整个项目位于地图内,用

M
表示,但事实不应该是这样。在 DynamoDB 中存储的正确形状应在顶层具有
customer_id

{'customer_id': {'S': '79075d7c7276e61df7ca6615986f7d05464995245d3f9155f60467c0cb195cf1'}, 'non_personalized': {'S': "{'Em Alta1': ['loja1', 'loja2', 'loja3']
© www.soinside.com 2019 - 2024. All rights reserved.