Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
Apache spark 是否有使用pyspark计算列平均值的代码?_Apache Spark_Pyspark_Apache Spark Sql - Fatal编程技术网

Apache spark 是否有使用pyspark计算列平均值的代码?

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__=="

我想使用spark RDD和数据帧计算每个城市的平均enternum groupby city。我想要两种方式

此外,在计算平均值时,如何忽略前两个标题行

我尝试过使用RDD和数据帧。但都没有成功

这是输入csv文件

城市、类型、enterdate、enternum

縣市,軍種類別,入營日期,入營人數

臺北市,陸軍,1040713150

臺北市,陸軍,1040813210

臺北市,陸軍,1040827180

臺北市,陸軍,1040915300

这是python代码:

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”。希望这是有帮助的!