hive和spark-sql计算stddev的结果差异
2017-11-03 16:48
1061 查看
问题描述:
利用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个好处:
表示离散程度的数字与样本数据点的数量级一致,更适合对数据样本形成感性认知;
表示离散程度的数字单位与样本数据及均值的单位一致,更方便做后续的分析运算;
在样本数据大致符合正态分布的情况下,标准差具有方便估算的特性:“3希格玛原则”。
贝塞尔修正
除了上述方差的计算方式,还有一种计算方式,公式如下
使用N所计算得到的方差及标准差只能用来表示该数据集本身(population)的离散程度;如果数据集是某个更大的研究对象的样本(sample),那么在计算该研究对象的离散程度时,就需要对上述方差公式和标准差公式进行贝塞尔修正,将N替换为N-1。
即是除以 N 还是 除以 N-1,则要看样本是否全:如果是抽样,则除以N-1,如果是全部,则除以N。
相关文章推荐
- spark sql 获取系统时间,计算时间后结果浮点型转整型
- HIVE和SPARKSQL计算引擎在TEXT导入PARQUET格式的HIVE存储引擎分片数量机制
- 一起学spark(10) -- spark SQL中的结构化数据之一 : Apache Hive
- SparkSQL On Yarn with Hive,操作和访问Hive表
- HiveQ与传统SQL差异
- SparkSQL和Hive集成
- Kerberos认证下Sparksql向hive写数据错误
- 第76课:Spark SQL基于网站Log的综合案例实战之Hive数据导入、Spark SQL对数据操作每天晚上20:00YY频道现场授课频道68917580
- Spark SQL+Hive历险记
- Spark Streaming+Kafka+Hive+JSON实时增量计算示例
- kafka + spark streaming 实时读取计算 nginx 日志,存储结果到 mongodb/mysql
- Spark SQL整合Hive使用
- SparkSQL读取Hive中的数据
- SparkSQL On Yarn with Hive,操作和访问Hive表
- SparkSQL读取Hive中的数据
- SQL数据分析概览——Hive、Impala、Spark SQL、Drill、HAWQ 以及Presto+druid
- Spark SQL 与 Spark SQL on Hive 区别
- 使用java代码提交Spark的hive sql任务,run as java application
- Spark(九):Spark SQL访问Hive,MySQL
- sparksql on hive实践