Python AWS从数组中粘合动态框架列

Python AWS从数组中粘合动态框架列,python,amazon-web-services,aws-glue,Python,Amazon Web Services,Aws Glue,我有一个嵌套的json,结构如下例所示: {'A':[{'key':'B','value':'C'},{'key':'D','value':'E'}]} 现在,我想将其映射到以下模式: e、 g.从类似json的文件中恢复的结构: {'A':{'B':'C','D':'E'}} “A”中的数组没有固定数量的条目,但包含的dict始终有两个键“key”和“value”请查找下面的脚本 从pyspark.sql.functions导入照明、颜色、分解、创建地图、收集列表 来自itertools进口

我有一个嵌套的json,结构如下例所示: {'A':[{'key':'B','value':'C'},{'key':'D','value':'E'}]} 现在,我想将其映射到以下模式:

e、 g.从类似json的文件中恢复的结构:

{'A':{'B':'C','D':'E'}}

“A”中的数组没有固定数量的条目,但包含的dict始终有两个键“key”和“value”

请查找下面的脚本

从pyspark.sql.functions导入照明、颜色、分解、创建地图、收集列表 来自itertools进口链 >>>sample.printSchema 根 |-A:数组可空=真 ||-元素:struct containsnall=true || |-key:string nullable=true || |-value:string nullable=true >>>最终_df=样品 ... .选择分解'A'。别名A ... .使用ColumnA,创建_mapA.key,A.value ... .groupby.aggcollect_listA.aliasA ... >>>最终打印模式 根 |-A:数组可空=真 ||-元素:map containsnall=false || |-键:字符串 || |-value:string valuecontainsnall=true >>>最终函数showtruncate=False +----------+ |A| +----------+ |[B->C],[D->E]]| +----------+ >>>终稿 ... .写 ... .格式化JSON ... .模式覆盖 ... .保存样本文件/2020-09-29/out ...
请在下面找到脚本

从pyspark.sql.functions导入照明、颜色、分解、创建地图、收集列表 来自itertools进口链 >>>sample.printSchema 根 |-A:数组可空=真 ||-元素:struct containsnall=true || |-key:string nullable=true || |-value:string nullable=true >>>最终_df=样品 ... .选择分解'A'。别名A ... .使用ColumnA,创建_mapA.key,A.value ... .groupby.aggcollect_listA.aliasA ... >>>最终打印模式 根 |-A:数组可空=真 ||-元素:map containsnall=false || |-键:字符串 || |-value:string valuecontainsnall=true >>>最终函数showtruncate=False +----------+ |A| +----------+ |[B->C],[D->E]]| +----------+ >>>终稿 ... .写 ... .格式化JSON ... .模式覆盖 ... .保存样本文件/2020-09-29/out ...
如果我执行您的代码,我会得到以下json:{A:[{key:B,value:D},{key:D,value:E}]}非常感谢您,这非常有帮助!我无法提升它,因为我的声誉还不到15。所以我遇到了新的问题,虽然这在pyspark中非常有效,但如果我在awsglue中使用它,它恰好失败。数据框如下所示:|1 |[[责任->真实],[部分_全面->真实],…如果我现在将其转换为动态帧并保存并尝试对其进行爬网,我会得到一个空表。aws glue不能处理mapType列吗?得到一个空表可能有两个原因。下面的s3对象是空的,或者爬网程序无法解析对象。当使用s3 select时,您能看到文件中的记录吗?所以我检查了使用spark在本地写入jsons时发生的情况,然后我得到的不是dataframe中的映射,而是类似于:{org.apache.spark.sql.catalyst.expressions的条目。UnsafeArrayData@312b0a80:[true]},我认为这些可能会导致爬虫程序失败。此外,如果我执行您的代码,我不知道它们来自何处,我会得到以下json:{A:[{key:B,value:D},{key:D,value:E}]}非常感谢,这很有帮助!我无法提升它,因为我的声誉还不到15。所以我遇到了新的问题,虽然这在pyspark中非常有效,但如果我在awsglue中使用它,它碰巧会失败。数据框架如下所示:|1 |[[责任->真实],[部分全面->真实],…如果我现在将其转换为动态帧并保存并尝试对其进行爬网,我会得到一个空表。aws glue不能处理mapType列吗?得到一个空表可能有两个原因。下面的s3对象是空的,或者爬网程序无法解析对象。当使用s3 select时,您能看到文件中的记录吗?所以我检查了使用spark在本地写入jsons时发生的情况,然后我得到的不是dataframe中的映射,而是类似于:{org.apache.spark.sql.catalyst.expressions的条目。UnsafeArrayData@312b0a80:[对]},我认为这些可能会导致爬虫程序失败。而且我也不知道它们是从哪里来的
{'A':{'B':'C','D':'E'}}