我有一个配置单元表,它有一个struct data type列(下面的示例)。该表是在avro文件上创建的。
通过使用pyspark,如何展平记录,以便在每个列中获得简单的数据类型值(不是struct、array或list)来加载另一个配置单元表。
我可以使用配置单元表或avro文件作为源。
样本数据-
配置单元列名:contract\u data
{"contract":
{"contractcode":"CCC",
unit:
{"value":"LOCAL",
desc:"LOCAL"},
segmentlist:
{"segment":[ #"segment" is array of struct here
{"transaction":"1",
"plans":
{"identifier":[ #"identifier" is array of struct here
{"value":"123","desc":"L1"},
{"value":"456","desc":"L2"}]
}
}]
}
},
plans:
{"listplans":[ #"listplans" is array of struct here
{"plantype":"M",
plandesign:
{"value":"PV","desc":"PD"},
state:
{"value":"ST","desc":"ST"}
}]
}
}
1条答案
按热度按时间r55awzrz1#
您可以首先将配置单元表读取为spark dataframe,如下所示。
然后,您可以从spark的dataframeapi中分解函数来展平结构。pfb的样本代码应该工作。
如果结构是嵌套的,我可以在上面的示例数据中看到,您可以应用
explode
多次。希望有帮助。
当做,
尼拉吉