我在不同的json文件中有json数据,并且键可以在行中不同,例如
{"a":1 , "b":"abc", "c":"abc2", "d":"abc3"}
{"a":1 , "b":"abc2", "d":"abc"}
{"a":1 ,"b":"abc", "c":"abc2", "d":"abc3"}
我想聚合列'b','c','d '和'f'上的数据,这些数据不存在于给定的json文件中,但可能存在于其他文件中。因此,由于列'f'不存在,我们可以为该列取空字符串。
我正在阅读输入文件,并像下面这样聚合数据
import pyspark.sql.functions as f
df = spark.read.json(inputfile)
df2 =df.groupby("b","c","d","f").agg(f.sum(df["a"]))
这是我想要的最终输出
{"a":2 , "b":"abc", "c":"abc2", "d":"abc3","f":"" }
{"a":1 , "b":"abc2", "c":"" ,"d":"abc","f":""}
谁能帮帮忙?提前感谢!
4条答案
按热度按时间syqv5f0l1#
您可以检查列是否在Xtrame中可用,并仅在必要时修改
df
:对于嵌套模式,您可能需要像下面这样使用
df.schema
:daolsyd02#
如果有人在Scala中需要这个:
r8uurelv3#
这个功能对我来说。
5lhxktic4#
下面是一个可以在
df.transform(f)
中使用的spark函数: