我有如下数据。文件名: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 = ????
- 按照以下说明进行操作自述文件 https://github.com/databricks/spark-csv/blob/master/README.md包括spark-csv package https://github.com/databricks/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("*"))
或者:
- cast
percent
转为数字
- 重塑为格式 ((
year
, sex
), percent
)
-
aggregateByKey
using pyspark.statcounter.StatCounter
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)