财富坊cff888 /
  • 数学 /
  • 问题描述:

    利用spark-sql得到了NaN的值,核对发现这些值都是关于stddev计算后得到的,但是在hive中查得为0.0。

    使用的SQL代码为

    select
      phone
    , tour_ymd  
    , stddev(total_price) as total_price_stddev
    , stddev(bedroom_cnt) as bedroom_cnt_stddev
    , stddev(tour_last_mintues) as tour_last_mintues_stddev
    , stddev(showing_last_3day_cnt) as showing_last_3day_cnt_stddev
    , stddev(showing_last_7day_cnt) as showing_last_7day_cnt_stddev
    , stddev(showing_last_15day_cnt) as showing_last_15day_cnt_stddev
    , stddev(showing_last_30day_cnt) as showing_last_30day_cnt_stddev
    , stddev(temp) as stddevtemp
    , stddev(humidity) as stddevhumidity
    , stddev(aqi) as stddevaqi
    from my_tb
    where my_condition
    group by phone, tour_ymd

    问题原因:

    虽然都执行的是一个SQL代码,但是从结果上看,hive中执行的时候是除以N(标准差)而spark-sql中执行时除以的是N-1(贝塞尔修正的标准差)

    关于方差标准差知识点

    • 方差:描述数据集中数据点的离散程度;数学公式如下:

    其中N的作用为将计算得到的累积偏差进行平均,从而消除数据集大小对计算数据离散程度所产生的影响。
    • 标准差数学上定义为方差的平方根

    方差和标准差都是对一组(一维)数据进行统计的,反映的是一维数组的离散程度;与之相对应的是协方差,对两组数据进行统计的,反映的是两组数据之间的相关性。
    • 使用标准差的优势
    与方差相比,使用标准差来表示数据点的离散程度有3个好处:
    1. 表示离散程度的数字与样本数据点的数量级一致,更适合对数据样本形成感性认知;
    2. 表示离散程度的数字单位与样本数据及均值的单位一致,更方便做后续的分析运算;
    3. 在样本数据大致符合正态分布的情况下,标准差具有方便估算的特性:“3希格玛原则”。
    除了上述方差的计算方式,还有一种计算方式,公式如下

    使用N所计算得到的方差及标准差只能用来表示该数据集本身(population)的离散程度;如果数据集是某个更大的研究对象的样本(sample),那么在计算该研究对象的离散程度时,就需要对上述方差公式和标准差公式进行贝塞尔修正,将N替换为N-1。
    即是除以 N 还是 除以 N-1,则要看样本是否全:如果是抽样,则除以N-1,如果是全部,则除以N。

    阅读全文

    Spark MLlib特征处理:均值、方差、协方差 ---原理及实战

    原理 向量a→=(x1,x2,x3...xn)\overrightarrow{a}= \left ( x_{1},x_{2},x_{3}...x_{n} \right ),aka_{k}是a→\o...
    • wangpei1949
    • wangpei1949
    • 2016年11月16日 19:52
    • 3800

    spark常用函数:transformation和action

    1、RDD提供了两种类型的操作:transformation和action 所有的transformation都是采用的懒策略,如果只是将transformation提交是不会执行计算的,计算只有在...
    • qq_16365849
    • qq_16365849
    • 2016年02月19日 15:20
    • 7850

    Spark-SQL之DataFrame操作大全

    Spark SQL中的DataFrame类似于一张关系型数据表。在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现。可以参考,Scala提供的DataFra...
    • dabokele
    • dabokele
    • 2016年10月12日 23:31
    • 45146

    均匀分布生成标准正态分布 python

    三种由(0,1)均匀分布构造标准正态分布随机变量的方法: Box–Muller算法 ,中心极限定理和Kinderman and Monahan method。...
    • lyr369852147
    • lyr369852147
    • 2016年01月20日 15:01
    • 5010

    hadoop & hive任务优化之系统概况及任务详情查看方法

    此为hadoop & hive任务优化之第二篇,任务优化的前提是能够对任务所属的环境和任务的执行详情了解的比较清楚,才能进一步去讲优化。查看这些参数情况的方法,有多种,包括通过hadoop web u...
    • erliang20088
    • erliang20088
    • 2016年06月10日 23:11
    • 1473

    hive函数 -- stddev , stddev_pop , stddev_samp , var_pop , var_samp

    标准差是方差开方后的结果(即方差的算术平方根) 假设这组数据的平均值是m 方差公式s^2=1/n[(x1-m)^2+(x2-m)^2+...+(xn-m)^2]...
    • lxpbs8851
    • lxpbs8851
    • 2014年09月16日 15:12
    • 11977

    hive -- stddev , stddev_pop , stddev_samp , var_pop , var_samp(计算方差标准差等)

    原文链接 标准差是方差的平方根 1.方差公式: m为x1,x2…xn数列的期望值(平均数) s^2 = [(x1-m)^2 + (x2-m)^2 + … (xn-m)^2]/n s即为标准差...
    • geyu8476771
    • geyu8476771
    • 2017年05月16日 15:26
    • 621

    Hive学习之内置聚合函数

    聚合函数 下表为Hive内置的聚合函数。 返回类型 函数名 描述 BIGINT count(*) count(expr)...
    • sky_walker85
    • sky_walker85
    • 2014年08月25日 17:19
    • 14064

    hive 内置函数

    参考链接:?Hive常用字符串函数 ? ? ? ? ? ? ? ? ? ? ? ? ???Hive中复合数据结构简介以及一些函数的用法说明 数学函数 下面表格中的函数为Hive的内置...
    • u011138533
    • u011138533
    • 2016年08月24日 17:28
    • 2360

    hive--基本数据计算

    来源:/bc5/lxpbs8851/article/details/39317611 标准差是方差的平方根 1.方差公式: m为x1,x2...xn数列的期望值...
    • qq_34941023
    • qq_34941023
    • 2016年09月27日 13:05
    • 1518
    内容举报
    返回顶部
    收藏助手
    不良信息举报
    您举报文章:hive和spark-sql计算stddev的结果差异
    举报原因:
    原因补充:

    (最多只允许输入30个字)