[英]Pyspark - Aggregation on multiple columns
我有如下数据。 文件名:babynames.csv。
year name percent sex
1880 John 0.081541 boy
1880 William 0.080511 boy
1880 James 0.050057 boy
我需要根据年份和性别对输入进行排序,我希望输出汇总如下(此输出将分配给新的RDD)。
year sex avg(percentage) count(rows)
1880 boy 0.070703 3
我不确定如何在pyspark中执行以下步骤。 需要你的帮助
testrdd = sc.textFile("babynames.csv");
rows = testrdd.map(lambda y:y.split(',')).filter(lambda x:"year" not in x[0])
aggregatedoutput = ????
spark-csv
包 加载数据
df = (sqlContext.read .format("com.databricks.spark.csv") .options(inferSchema="true", delimiter=";", header="true") .load("babynames.csv"))
导入所需的功能
from pyspark.sql.functions import count, avg
分组依据和聚合(可选使用Column.alias
:
df.groupBy("year", "sex").agg(avg("percent"), count("*"))
另外 :
percent
为数字 year
, sex
), percent
) aggregateByKey
使用pyspark.statcounter.StatCounter
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.