我是pyspark的新手,任何人都可以帮我汇总这些数据。
我在这样的文本文件中有json数据
{"a":1 , "b":"abc", "c":"abc2", "d":"abc3" , "e":"1234"}
{"a":1 , "b":"abc2", "c":"abc", "d":"abc" ,"e":"1234"}
{"a":1 , "b":"abc", "c":"abc2", "d":"abc3","e":"123"}
我想在“b”,“c”,“d”列上汇总数据,同时在“a”列中添加值,然后添加新列“unique_e”,这将在基础上给出唯一的“e”列值列'e'。
这是我想要的最终输出
{"a":2 , "b":"abc", "c":"abc2", "d":"abc3" , "unique_e":"2"}
{"a":1 , "b":"abc2", "c":"abc", "d":"abc" , "unique_e":"1"}
答案 0 :(得分:0)
试试这个:
import pyspark.sql.functions as f
df = spark.read.json(pathToFile)
df2 = df.groupby("b","c","d").agg(f.countDistinct(df["e"]).alias("unique_e"), f.sum(df["a"]).alias("sum_a"))
如果你想将它保存到单个json文件中,你可以这样做:
df2.coalesce(1).write(pathToDir)
json将在一个看起来像这样的文件中:part-00000-e3421247-f8cd-4ecb-b8e6-fc26894f5282.json
如果您没有定义spark(如果您使用pyspark shell或正确配置您的笔记本将定义),如果您从外部脚本运行代码,则可能会执行以下操作:< / p>
spark = SparkSession.builder.master("local").appName("example").getOrCreate()
创建它。