Объединение полей в AWS клеевых заданий - PullRequest
0 голосов
/ 08 мая 2020

Моя цель - извлечь запись из таблицы DDB и преобразовать ее в объект S3 JSON.

Записи в таблице DDB:

учетные записи отображаемое имя имя объекта имя объекта объект определение объекта

Требуемое определение объекта S3:

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

Теперь скрипт искрового преобразования для преобразования его в camelCase очень просто. Но как мне создать новое поле, например объект Json, и добавить к нему определенные поля из ddb как JSON.

1 Ответ

0 голосов
/ 09 мая 2020

Вы можете сделать это следующим образом

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')

Надеюсь, это поможет

...