python - 在 Python 中使用 RDD 与 Spark SQL 计算标准偏差

标签 python apache-spark pyspark apache-spark-sql

我是 spark 世界的新手(甚至是 Python,但更好)。我正在尝试计算标准偏差并使用了以下代码。第一次使用SparkSQL,代码如下:

 sqlsd=spark.sql("SELECT STDDEV(temperature) as stdtemp from 
 washing").first().stdtemp
 print(sqlsd)

以上工作正常(我认为),结果为 6.070

现在,当我尝试使用带有以下代码的 RDD 执行此操作时:-

 def sdTemperature(df,spark):
    n=float(df.count())
    m=meanTemperature(df,spark) 
    df=df.fillna({'_id':0,'_rev':0,'count':0,'flowrate':0,'fluidlevel':0,
   'frequency':0,'hardness':0,'speed':0,'temperature':0,'ts':0,'voltage':0})
    rddT=df.rdd.map(lambda r: r.temperature)
    c=rddT.count()
    s=rddT.map(lambda x: pow(x-m,2)).sum()
    print(n,c,s)
    sd=sqrt(s/c)
    return sd

当我运行上面的代码时,我得到了不同的结果。我得到的值是 53.195

我做错了什么?我上面要做的就是计算 spark 数据框列温度的标准偏差并使用 lambda。

在此先感谢您的帮助..

最佳答案

感谢 Zero323 给了我线索。我跳过了空值。修改后的代码如下:-

 df2=df.na.drop(subset=["temperature"])
 rddT=df2.rdd.map(lambda r: r.temperature)
 c=rddT.count()
 s=rddT.map(lambda x: pow(x-m,2)).sum()
 sd=math.sqrt(s/c)
 return(sd)

关于python - 在 Python 中使用 RDD 与 Spark SQL 计算标准偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43175577/

相关文章:

python - 为什么列表没有像字典一样的安全 "get"方法?

python - Apache Spark MulticlassMetrics.precision() 中的 "Value at index 1 in null"

python - AWS Glue 截断 Redshift 表

Python MemoryError 试图分割大字符串

python - 我如何在 Pandas 中按月内的第 n 个工作日分组?

apache-spark - 如何在 Java 中将 String 映射到 Spark 中的 Seq<String>

scala - 从终端在 Spark scala 中添加外部库

python - 用户定义的函数破坏了 pyspark 数据帧

python - pyspark 每列上有不同的计数

python - 在pygame<外星人入侵>中,为什么我的外星人只出现一排?