从spark数据帧中提取数组列

时间:2017-10-03 13:45:34

标签: apache-spark pyspark spark-dataframe

我的spark数据框有数组列,我必须通过从单个数组列中提取数据来生成新列。有没有可用的方法。

 id  Amount 
 10   [Tax:10,Total:30,excludingTax:20] 
 11   [Total:30] 
 12   [Tax:05,Total:35,excludingTax:30]

我必须生成这个数据帧。

 ID  Tax Total 
 10  10   30   
 11  0    30   
 12  05   35

1 个答案:

答案 0 :(得分:0)

如果您确定[Tax:10,Total:30,exceptTax:20]是同一顺序中的唯一字段,您可以始终映射整个数据帧并将其提取为Amount [0],Amount [1]。 ..

然后将它们指定为案例类的实例,最后转换回数据帧。

如果Amount只有2个值,那么你必须要小心,不要调用Amount [3]。通过检查数组长度可以轻松实现这一点。

或者,如果您不知道订单。最好的方法是使用JSONRdd。然后遍历JSON对象解析它们并创建一个新行。最后将其转换为数据框