我有一个PySpark的数据框,其中包含3列 - json、date和object_id:
-----------------------------------------------------------------------------------------
|json |date |object_id|
-----------------------------------------------------------------------------------------
|{'a':{'b':0,'c':{'50':0.005,'60':0,'100':0},'d':0.01,'e':0,'f':2}}|2020-08-01|xyz123 |
|{'a':{'m':0,'n':{'50':0.005,'60':0,'100':0},'d':0.01,'e':0,'f':2}}|2020-08-02|xyz123 |
|{'g':{'h':0,'j':{'50':0.005,'80':0,'100':0},'d':0.02}} |2020-08-03|xyz123 |
-----------------------------------------------------------------------------------------
现在我有一个变量列表:[a.c.60, a.n.60, a.d, g.h]。我需要从上述DataFrame的JSON列中提取这些变量,并将这些变量作为列添加到DataFrame中,以及它们各自的值。
因此,最终DataFrame应该如下所示:
-------------------------------------------------------------------------------------------------------
|json |date |object_id|a.c.60|a.n.60|a.d |g.h|
-------------------------------------------------------------------------------------------------------
|{'a':{'b':0,'c':{'50':0.005,'60':0,'100':0},'d':0.01,...|2020-08-01|xyz123 |0 |null |0.01|null|
|{'a':{'m':0,'n':{'50':0.005,'60':0,'100':0},'d':0.01,...|2020-08-02|xyz123 |null |0 |0.01|null|
|{'g':{'h':0,'j':{'k':0.005,'':0,'100':0},'d':0.01}} |2020-08-03|xyz123 |null |null |0.02|0 |
-------------------------------------------------------------------------------------------------------
请帮忙获取这个结果数据框。我面临的主要问题是由于传入的JSON数据没有固定的结构。JSON数据可以是任何嵌套形式,但是我需要提取给定的四个变量。我已经在Pandas中通过展开JSON字符串并提取4个变量来实现了这一点,但在Spark中变得困难起来。