Apache spark 是否有使用pyspark计算列平均值的代码?
我想使用spark RDD和数据帧计算每个城市的平均enternum groupby city。我想要两种方式 此外,在计算平均值时,如何忽略前两个标题行 我尝试过使用RDD和数据帧。但都没有成功 这是输入csv文件 城市、类型、enterdate、enternum 縣市,軍種類別,入營日期,入營人數 臺北市,陸軍,1040713150 臺北市,陸軍,1040813210 臺北市,陸軍,1040827180 臺北市,陸軍,1040915300 这是python代码:Apache spark 是否有使用pyspark计算列平均值的代码?,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我想使用spark RDD和数据帧计算每个城市的平均enternum groupby city。我想要两种方式 此外,在计算平均值时,如何忽略前两个标题行 我尝试过使用RDD和数据帧。但都没有成功 这是输入csv文件 城市、类型、enterdate、enternum 縣市,軍種類別,入營日期,入營人數 臺北市,陸軍,1040713150 臺北市,陸軍,1040813210 臺北市,陸軍,1040827180 臺北市,陸軍,1040915300 这是python代码: if __name__=="
if __name__=="__main__":
#RDD
rdd = sc.textFile("junren.csv").flatMap(lambda line: line.split(",")[3])
rdd.mean().show()
#datefrmae
sqlContext = SQLContext(sc)
df = sqlContext.read.load('junren.csv',format='com.databricks.spark.csv',header='true',inferSchema='true',encoding='UTF-8')
df.mean("enternum").show()
#df.groupBy('city').agg(avg(col('enternum'))).show()
这是dataframe的错误:
回溯最近的调用上次:文件
C:\Users\pc95\eclipse workspace\demo2\src\Test7.py,第49行,在
df.meanenternum.show文件C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\sql\dataframe.py,
第1300行,在getattr中
“%s”对象没有属性“%s”%self.class.name,name AttributeError:“DataFrame”对象没有属性“mean”
这是RDD的错误:
org.apache.spark.api.python.PythonException:回溯最新版本
最后呼叫:文件
C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\worker.py,
第377行,在主文件中
C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\worker.py,
第372行,进程中文件
C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\rdd.py,
第2499行,管道中_func
返回funcsplit,prev_funcsplit,迭代器文件C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\rdd.py,
第2499行,管道中_func
返回funcsplit,prev_funcsplit,迭代器文件C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\rdd.py,
第352行,以func表示
返回fiterator文件C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\rdd.py,
第1065行,在
返回self.mapPartitionslambda i:[statcountri].reduceredFunc文件
C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\statcounter.py,
第43行,在init中
self.mergev文件C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\statcounter.py,
第47行,合并中
delta=值-self.mu
19/05/15 04:46:01错误TaskSetManager:阶段0.0中的任务1失败1
时代;正在中止作业回溯最近的调用last:File
C:\Users\pc95\eclipse workspace\demo2\src\Test7.py,第40行,在
rdd.mean.show文件C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\rdd.py,
第1202行,平均
返回self.stats.mean文件C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\rdd.py,
第1065行,统计数据
返回self.mapPartitionslambda i:[statcountri].reduceredFunc文件
C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\rdd.py,
第844行,在REDUCT中
vals=self.mapPartitionsfunc.collect文件C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\rdd.py,
第816行,在collect中
sock_info=self.ctx._jvm.PythonRDD.collectAndServeself._jrdd.rdd文件
C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\lib\py4j-0.10.7-src.zip\py4j\java_gateway.py,
第1257行,在调用文件中
C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\lib\py4j-0.10.7-src.zip\py4j\protocol.py,第328行,在get\u return\u value py4j.protocol.Py4JJavaError:一个错误
在调用时发生
z:org.apache.spark.api.python.PythonRDD.collectAndServe.:
org.apache.spark.sparkeexception:由于阶段失败,作业中止:
阶段0.0中的任务1失败1次,最近一次失败:丢失任务1.0
在阶段0.0 TID 1中,本地主机、执行器驱动程序:
org.apache.spark.api.python.PythonException:回溯最新版本
最后呼叫:文件
C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\worker.py,
第377行,在主文件中
C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\worker.py,
第372行,进程中文件
C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\rdd.py,
第2499行,管道中_func
返回funcsplit,prev_funcsplit,迭代器文件C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\rdd.py,
第2499行,管道中_func
返回funcsplit,prev_funcsplit,迭代器文件C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\rdd.py,
第352行,以func表示
返回fiterator文件C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\pyspark\rdd.py,
第1065行,在
返回self.mapPartitionslambda i:[statcountri].reduceredFunc文件
C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\statcounter.py,
第43行,在init中
self.mergev文件C:\Users\pc95\Downloads\spark-2.4.2-bin-hadoop2.7\python\lib\pyspark.zip\pyspark\statcounter.py,
第47行,合并中
delta=value-self.mu TypeError:不支持-:“str”和“float”的操作数类型
从错误的最后一行开始,我相信您的列是“String”类型。因此,我使用SQL cast方法将其转换为“整数”类型
from pyspark.sql import functions as F
from pyspark.sql.types import IntegerType
#Entire column average
df.select(F.avg(df.enternum.cast(IntegerType()))).show()
#City wise average
df.groupby('City').agg(F.avg(df.enternum.cast(IntegerType())).alias('Average_enternum')).show()
谢谢你的回答!但是我无法导入F.avg如何导入spark.sql.functions.avg?@Gyu lim Shim,pyspark.sql import functions as F的第一行“导入整个sql函数包”。或者,您可以通过将第一行替换为“from pyspark.sql.functions import AVG”仅导入AVG方法,并在代码的下一部分中使用“AVG”而不是“F.AVG”。希望这是有帮助的!