我的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
答案 0 :(得分:0)
如果您确定[Tax:10,Total:30,exceptTax:20]是同一顺序中的唯一字段,您可以始终映射整个数据帧并将其提取为Amount [0],Amount [1]。 ..
然后将它们指定为案例类的实例,最后转换回数据帧。
如果Amount只有2个值,那么你必须要小心,不要调用Amount [3]。通过检查数组长度可以轻松实现这一点。
或者,如果您不知道订单。最好的方法是使用JSONRdd。然后遍历JSON对象解析它们并创建一个新行。最后将其转换为数据框