使用 AWS Glue 从 S3 读取动态数据类型
Reading Dynamic DataTpes from S3 with AWS Glue
我有 json 存储在 S3 中。有时 units
存储为字符串,有时存储为整数。不幸的是,这是一个错误,我现在在源 json.
中有数十亿条具有混合匹配数据类型的记录
示例:
{
"other_stuff": "stuff"
"units": 2,
{
{
"other_stuff": "stuff"
"units": "2",
{
我想动态确定它是字符串还是整数,然后将其作为整数定位到 AWS Redshift。
如果我的映射是:("units", "string", "units", "int")
,只有“字符串”值会被正确转换。如果我这样做 ("units", "int", "units", "int")
则相反,只有“整数”才有效。
如何动态转换源记录,并始终将其作为整数加载到 Redshift 中。您可以假设,所有值都是数字,而不是 null,并且该属性保证存在。
您可以使用 Glue 中的 ResolveChoices 函数。
resolved_choices = df.resolveChoice(
specs=[
('units', 'cast:int')
]
)
我有 json 存储在 S3 中。有时 units
存储为字符串,有时存储为整数。不幸的是,这是一个错误,我现在在源 json.
示例:
{
"other_stuff": "stuff"
"units": 2,
{
{
"other_stuff": "stuff"
"units": "2",
{
我想动态确定它是字符串还是整数,然后将其作为整数定位到 AWS Redshift。
如果我的映射是:("units", "string", "units", "int")
,只有“字符串”值会被正确转换。如果我这样做 ("units", "int", "units", "int")
则相反,只有“整数”才有效。
如何动态转换源记录,并始终将其作为整数加载到 Redshift 中。您可以假设,所有值都是数字,而不是 null,并且该属性保证存在。
您可以使用 Glue 中的 ResolveChoices 函数。
resolved_choices = df.resolveChoice(
specs=[
('units', 'cast:int')
]
)