Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 火花减速器在几个不同的值上_Python_Apache Spark_Pyspark - Fatal编程技术网

Python 火花减速器在几个不同的值上

Python 火花减速器在几个不同的值上,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我有一个存储为列表RDD的表,我希望在该表上执行类似于SQL或pandas中的groupby的操作,获取每个变量的总和或平均值 我目前的做法是(未经测试的代码): 然后我需要加入dict中的所有RDD 但这不是很有效。有更好的方法吗?如果使用>=Spark 1.3,可以查看 在pyspark外壳中: import numpy as np # create a DataFrame (this can also be from an RDD) df = sqlCtx.createDataFrame(

我有一个存储为列表RDD的表,我希望在该表上执行类似于SQL或pandas中的groupby的操作,获取每个变量的总和或平均值

我目前的做法是(未经测试的代码):

然后我需要加入dict中的所有RDD


但这不是很有效。有更好的方法吗?

如果使用>=Spark 1.3,可以查看

在pyspark外壳中:

import numpy as np
# create a DataFrame (this can also be from an RDD)
df = sqlCtx.createDataFrame(map(lambda x:map(float, x), np.random.rand(50, 3)))
df.agg({col: "mean" for col in df.columns}).collect()
这将产生:

[Row(AVG(_3#1456)=0.5547187588389414, AVG(_1#1454)=0.5149476209374797, AVG(_2#1455)=0.5022967093047612)]
可用的聚合方法有“平均值”/“平均值”、“最大值”、“最小值”、“总和”、“计数”

要为同一列获取多个聚合,可以使用显式构造的聚合列表而不是字典调用
agg

from pyspark.sql import functions as F
df.agg(*[F.min(col) for col in df.columns] + [F.avg(col) for col in df.columns]).collect()
或者对于您的情况:

df.agg(F.count(df.var3), F.max(df.var3), ) # etc...

你能告诉我对于特定变量使用特定聚合方法的语法吗。目前,下面只给出了我对每个变量使用的最后一个方法:aggreg=df1.filter(df1.var3>25)。join(df2,df1.Machine==df2.Machine)。groupBy(df1.Machine)。agg({“var3”:“count”,“var3”:“max”,“var4”:“mean”,“var4”:“max”,“var5”:“mean”,“var6”:“mean”})谢谢。使用这种新语法,groupby变量(本例中为Machine)消失了。我怎么能保留它?
df.agg(F.count(df.var3), F.max(df.var3), ) # etc...