硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

Spark 1.4 为 DataFrame 新增的统计与数学函数

  • 2015-06-08
  • 本文字数:1333 字

    阅读完需:约 4 分钟

目前,Spark 1.4 版本在社区已经进入投票阶段,在 Github 上也提供了 1.4 的分支版本。最近,Databricks 的工程师撰写了博客,介绍了 Spark 1.4 为 DataFrame 新增的统计与数学函数。这篇博客介绍的函数主要包括:

  1. 随机数据生成(Random Data Generation)
  2. 概要与描述性统计(Summary and descriptive statistics)
  3. 协方差与相关性(Sample covariance and correlation)
  4. 交叉列表(Cross tabulation)
  5. 频率项(Frequent items)
  6. 数学函数(Mathematical functions)

随机数据生成(Random Data Generation)主要是为测试数据提供方便快捷的接口,如 range、rand 和 randn。rand 函数提供均匀正态分布,而 randn 则提供标准正态分布。在调用这些函数时,还可以指定列的别名,以方便我们对这些数据进行测试。

概要与描述性统计(Summary and Descriptive Statistics)包含了计数、平均值、标准差、最大值、最小值运算。只需要针对 DataFrame 调用 describe 函数即可:

复制代码
from pyspark.sql.functions import rand, randn
df = sqlContext.range(0, 10).withColumn('uniform', rand(seed=10)).withColumn('normal', randn(seed=27))
df.describe().show()
```可能的结果显示为:
summary id uniform normal count 10 10 10 mean 4.5 0.5215336029384192 -0.01309370117407197 stddev 2.8722813232690143 0.229328162820653 0.5756058014772729| min 0 0.19657711634539565 -0.7195024130068081 max 9 0.9970412477032209 1.0900096472044518 交叉列表为一组变量提供了频率分布表,在统计学中被经常用到。例如在对租车行业的数据进行分析时,需要分析每个客户(name)租用不同品牌车辆 (brand) 的次数。此时,就可以直接调用 crosstab 函数。例如:
`df.stat.crosstab("name", "brand").show()`但是需要注意的是,必须确保要进行交叉列表统计的列的基数不能太大。
为 DataFrame 新增加的数学函数都是我们在做数据分析中常常用到的,包括 cos、sin、floor、ceil 以及 pow、hypot 等。以上新特性都会在 Spark 1.4 版本中得到支持,并且支持 Python、Scala 和 Java。在未来发布的版本中,DataBricks 还将继续增强统计功能,并使得 DataFrame 可以更好地与 Spark 机器学习库 MLlib 集成,例如 Spearman Correlation(斯皮尔曼相关)、针对协方差运算与相关性运算的聚合函数等。
若希望了解这些新增特性的具体内容,可以持续关注 [DataBricks 的开发者博客](http://databricks.com/blog/category/developer)。
- - - - - -
感谢 [丁晓昀](http://www.infoq.com/cn/author/%E4%B8%81%E6%99%93%E6%98%80) 对本文的审校。
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 [editors@cn.infoq.com](mailto:editors@cn.infoq.com)。也欢迎大家通过新浪微博([@InfoQ](http://www.weibo.com/infoqchina),[@丁晓昀](http://weibo.com/u/1451714913)),微信(微信号:[InfoQChina](http://weixin.sogou.com/gzh?openid=oIWsFt0HnZ93MfLi3pW2ggVJFRxY))关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群 [![](https://static001.infoq.cn/resource/image/06/9f/06e1fec4a87eca3142d54d09844c629f.png)](http://shang.qq.com/wpa/qunwpa?idkey=cc82a73d7522f0090aa3cbb6a8f4bdafa8b82177f481014c976a8740d927997a))。
2015-06-08 04:467105
用户头像

发布了 109 篇内容, 共 45.3 次阅读, 收获喜欢 14 次。

关注

评论

发布
暂无评论
发现更多内容

架构实战营 模块二作业

fazinter

架构实战营

第 0 期架构训练营模块 2 作业

架构实战营

计算机原理学习笔记 Day8

穿过生命散发芬芳

计算机原理 4月日更

external-provisioner源码分析(3)-组件启动参数分析

良凯尔

Kubernetes 源码分析 Ceph CSI

数据脱敏:数仓安全隐私保护见真招儿

华为云开发者联盟

数据仓库 加密 隐私保护 GaussDB(DWS) 数据脱敏

基于crudapi增删改查接口后端Java SDK二次开发之环境搭建(一)

crudapi

Java API sdk crud crudapi

external-provisioner源码分析(2)-main方法与Leader选举分析

良凯尔

Kubernetes 源码分析 Ceph CSI

MySQL存储过程的异常处理

Sakura

4月日更

安卓rxjava合并多个请求,我的阿里手淘面试经历分享,面试必会

欢喜学安卓

android 程序员 面试 移动开发

架构实战营模块二作业

日照时间长

架构实战营

kubernetes ceph-csi分析-目录导航

良凯尔

Kubernetes 源码分析 Ceph CSI Kubernetes Plugin

Impala架构详解

五分钟学大数据

4月日更 impala

安卓内存监控悬浮窗,2021Android面试心得,全套教学资料

欢喜学安卓

android 程序员 面试 移动开发

堪称神作!阿里数位专家联合写的“大厂高频Java面试手册”

码农之家

Java 编程 程序员 互联网 面试

这才是大数据的正确打开方式

华为云开发者联盟

大数据 数据仓库 云原生 数据治理 灾备

MySQL 索引概要

大海

MySQL 索引

k8s通过ceph-csi接入存储的概要分析

良凯尔

Kubernetes 源码分析 Ceph CSI

Play with Go

Rayjun

教程 Go 语言

external-provisioner源码分析(1)-主体处理逻辑分析

良凯尔

Kubernetes 源码分析 Ceph CSI

技术实践丨列存表并发更新时的锁等待问题原理

华为云开发者联盟

事务 update 元组 列存表

阿里P8重磅总结:看完别说不会了哦,SpringBoot「完结篇」

比伯

Java 编程 程序人生 计算机 架构】

LitmusChaos: K8s上的混沌工程框架

混沌工程实践

k8s 混沌工程 litmuschaos 实践框架 故障实验库

因为这几个TypeScript代码的坏习惯,同事被罚了500块

华为云开发者联盟

typescript 运算符 代码 null strict

第十一周总结

2021互联网大厂高频面试专题500道:并发编程/Spring/MyBatis(附答案解析)

比伯

Java 编程 架构 程序人生 计算机

架构师实战营 模块二作业(微信朋友圈高性能复杂度架构分析)

代廉洁

架构实战营

Go Functions

escray

学习 极客时间 Go 语言 4月日更

边缘计算是流行词还是风口?开发者怎样选开源项目?

华为云开发者联盟

开源 开发者 5G 边缘计算 EdgeGallery 社区

Spring Bean创建过程的Hook

邱学喆

BeanPostProcessor @Autowired注入原理 @Resource注入原理 @Value注入原理

还有人搞不懂数据仓库与数据库的区别?

大数据技术指南

数据仓库 4月日更

python 函数详解

若尘

函数编程 函数

Spark 1.4为DataFrame新增的统计与数学函数_语言 & 开发_张逸_InfoQ精选文章