我已将 DynamoDB 表加载到 DynamicFrame 中,然后使用以下选项运行
relationalize
df_contracts_rel = df_contracts_normalized.relationalize(
"contracts",
staging_path=f"s3://data-export-{aws_account_id}-{aws_region}/temporary/relationalized/",
)
我正在使用 Glue 交互式会话。
一段时间后,工作完成了,但似乎关系化没有将任何内容存储到 s3 存储桶中。没有错误。
当我多次运行它时,我最终耗尽了本地存储空间,所以看起来 Glue 一直在将数据文件存储到本地文件系统中。
为什么会发生这种情况? 没有错误,并且 Glue 作业使用的角色对存储桶具有
PutObject*
和 ListBucket
权限。
我最终能够找到问题所在。
当关系化操作期间出现问题时,AWS Glue 和 DynamicFrame 似乎会出现问题。
我发现关系化操作产生的结果中的根数据帧有大量错误。我使用
errorsAsDataFrame
操作来跟踪问题。
这个问题也很神秘,是由底层 DataFrame 中使用的
Decimal
类型引起的,这是 DDB 反序列化的结果。
AWS Glue 似乎在 Decimal 类型方面存在问题,它甚至尝试将其用作根关系连接键并进入某个循环。
这一切造成了很多问题,并最终导致本地存储耗尽。