【问题标题】:Combining fields in AWS Glue jobs组合 AWS Glue 作业中的字段
【发布时间】:2020-05-08 19:53:32
【问题描述】:

我的目标是从 DDB 表中提取记录并将它们转换为 S3 JSON 对象。

DDB表中的记录是:

帐户 显示名称 姓名 对象名 对象标识 对象定义

S3 对象所需的定义是:

{
   "accounts": "example",
   "name": "exampleDisplay",
   "objectJson": "{
"displayname":"exampleDisplay",
"objectname":"exampleObjectName",
"objectId":"exampleObjectId",
"objectDefinition":"exampleDefintion",
}
}

现在,将其转换为 camelCase 的 spark 转换脚本很容易。 但是如何创建一个像 objectJson 这样的新字段并将 ddb 中的某些字段作为 JSON 添加到它。

【问题讨论】:

    标签: json amazon-s3 pyspark aws-glue


    【解决方案1】:

    你可以通过以下方式做到这一点

    df = spark.createDataFrame([('accounts','name','displayname','objectname','objectId','objectDefinition'),('accounts','name','displayname','objectname','objectId','objectDefinition')], ['accounts','name','displayname','objectname','objectId','objectDefinition'])
    
    df2 = df.withColumn('objectJson',f.struct(
                                f.col('displayname'),
                                f.col('objectname'),
                                f.col('objectId'),
                                f.col('objectDefinition')
    )).select('accounts','name','objectJson')
    
    df2.toJSON().take(100)
    
    [{"accounts":"accounts",
       "name":"name",
       "objectJson":{
                     "displayname":"displayname",
                     "objectname":"objectname",
                     "objectId":"objectId",
                      objectDefinition":"objectDefinition"
    }}]
    
    df2.repartition(1).write.json('path/to/save/data')
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-19
      • 2018-08-05
      • 1970-01-01
      • 2022-07-21
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多