假设我们有DataFrame,df包含以下列:
名称,姓氏,大小,宽度,长度,重量
现在我们想要执行几个操作,例如我们想要创建一些包含Size和Width数据的DataFrame.
val df1 = df.groupBy("surname").agg( sum("size") )
val df2 = df.groupBy("surname").agg( sum("width") )
Run Code Online (Sandbox Code Playgroud)
正如您所注意到的,其他列(如Length)不会在任何地方使用.Spark是否足够聪明,可以在洗牌阶段之前丢弃多余的列,还是随身携带?威尔跑:
val dfBasic = df.select("surname", "size", "width")
Run Code Online (Sandbox Code Playgroud)
在分组之前以某种方式影响性能?
performance dataframe apache-spark apache-spark-sql apache-spark-dataset
我有三个字符串类型的数组包含以下信息:
我正在尝试使用spark数据帧来实现这一目标.Spark数据框提供了agg(),您可以在其中传递Map [String,String](列名和相应的聚合操作)作为输入,但是我想对数据的同一列执行不同的聚合操作.有关如何实现这一目标的任何建议?
我有数据框,其中我有大约1000(可变)列.
我想让所有值都大写.
这是我想到的方法,你能否说一下这是最好的方法.
我有如下数据.文件名:babynames.csv.
year name percent sex
1880 John 0.081541 boy
1880 William 0.080511 boy
1880 James 0.050057 boy
Run Code Online (Sandbox Code Playgroud)
我需要根据年份和性别对输入进行排序,我希望输出汇总如下(此输出将分配给新的RDD).
year sex avg(percentage) count(rows)
1880 boy 0.070703 3
Run Code Online (Sandbox Code Playgroud)
我不确定如何在pyspark中执行以下步骤.需要你的帮助
testrdd = sc.textFile("babynames.csv");
rows = testrdd.map(lambda y:y.split(',')).filter(lambda x:"year" not in x[0])
aggregatedoutput = ????
Run Code Online (Sandbox Code Playgroud) 我想计算每列的平均值而不指定所有列名称。
例如,不要这样做:
res = df.select([mean('col1'), mean('col2')])
Run Code Online (Sandbox Code Playgroud)
我想做一些相当于:
res = df.select([mean('*')])
Run Code Online (Sandbox Code Playgroud)
那可能吗?
我想将数据框分组到单个列上,然后对所有列应用聚合函数。
例如,我有一个包含 10 列的 df。我希望对第一列“1”进行分组,然后对所有剩余列(均为数字)应用聚合函数“sum”。
与此等效的 R 是 summarise_all。前在R。
df = df%>%group_by(column_one)%>%summarise_all(funs(sum))
Run Code Online (Sandbox Code Playgroud)
我不想在 pyspark 的聚合命令中手动输入列,因为数据框中的列数是动态的。
我有一个包含多列的数据框.我希望按其中一个列进行分组,并将其他列聚合一次.假设该表有4列,cust_id,f1,f2,f3,我想通过cust_id进行分组,然后获得avg(f1),avg(f2)和avg(f3).该表将包含许多列.任何提示?
下面的代码是一个好的开始,但由于我有很多列,手动编写它们可能不是一个好主意.
df.groupBy("cust_id").agg(sum("f1"), sum("f2"), sum("f3"))
Run Code Online (Sandbox Code Playgroud) apache-spark ×6
pyspark ×3
dataframe ×2
mean ×1
performance ×1
python ×1
python-2.7 ×1
python-3.x ×1
r ×1
scala ×1