问题描述
要求:我需要完成一项胶粘工作,才能将aws-dynamodb(地图和列表的嵌套结构组合)数据输入到s3中。
我的方法:首先,我使用动态胶粘框架将来自dynamodb的所有数据整合到一个动态框架中。
datasource = glueContext.create_dynamic_frame.from_options(
"dynamodb",connection_options={
"dynamodb.input.tableName": table_name,"dynamodb.throughput.read.percent": read_percentage,"dynamodb.splits": "100",}
)
使用此功能后,我得到了包含所有数据的datasource
动态框架。
在这里我想进行某种转换并想要执行一些过滤器,所以这就是为什么我使用pyspark dataframe概念。
df0 = datasource.toDF()
我的输入数据帧df0
包含struct格式的json数据collection
,因此我使用to_json
将struct转换为json-string。这里我需要json字符串而不是struct。
df1 = df0.select(to_json("collection"))
从df1
,我正在访问所需的任何内容。
主要问题
集合中存在的某些属性显示如下
collection : {
"name" : "aaa","id" : "111","address" : "some address","price" :
{"string" : 1212.0 },"retailer" :
{"string" : "xxxx"},"categories" : "array": [
"7216"
]
}
如果您看到上面的示例price
,reatiler
,categories
,则数据类型显示为嵌套属性。
我想要这样的输出
collection : {
"name" : "aaa","price" : "1212.0","retailer" :"xxxx","categories" : "[7216]"
}
我该如何解决,请告诉我
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)