繁体   English   中英

Pyspark - 多列聚合

[英]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 = ????
  1. 按照自述文件中的说明操作,包括spark-csv
  2. 加载数据

     df = (sqlContext.read .format("com.databricks.spark.csv") .options(inferSchema="true", delimiter=";", header="true") .load("babynames.csv")) 
  3. 导入所需的功能

     from pyspark.sql.functions import count, avg 
  4. 分组依据和聚合(可选使用Column.alias

     df.groupBy("year", "sex").agg(avg("percent"), count("*")) 

另外

  • percent为数字
  • 重塑为格式(( yearsex ), percent
  • aggregateByKey使用pyspark.statcounter.StatCounter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM