AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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:466986
用户头像

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

关注

评论

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

滴滴工程效能平台建设之路

laofo

互联网 DevOps 研发效能 持续交付 工程效能

DOM 节点

Jason199

DOM js DOM事件 6月月更

redis精讲系列介绍七-过期策略

Nick

Redis 核心技术与实战 6月月更 redis精讲 redis 过期策略 redis 底层原理

我对新能源汽车的一些看法(37/100)

hackstoic

新能源汽车 生活杂谈

DingOS服务提交IPO配置指南

鼎道智联

前端 开发 IPO配置

axios框架入门教程

倔强的牛角

axios 6月月更

Java String 构造方法中的内存分配

HoneyMoose

Linux开发_curl调用网络接口

DS小龙哥

6月月更

IDE 的主题应该用亮色还是暗色?终极答案来了!

胡说云原生

ide vscode IDEA goland ide主题

钟珊珊:被爆锤后的工程师会起飞|OneFlow U

OneFlow

自我介绍 实习

Fabric.js IText 手动设置斜体 🎋

德育处主任

JavaScript 前端 canvas Fabric.js 6月月更

Gitlab运维篇之——备份及恢复

阿呆

#GitLab 备份恢复

Java String 文字(Literal)和 对象(Object)初始化

HoneyMoose

Java自定义Once方法保障单次执行

FunTester

社区文章|MOSN 构建 Subset 优化思路分享

SOFAStack

负载均衡 开源 开发者 算法

一文走近ZMQ

No Silver Bullet

6月月更 ZMQ

唐太宗把微服务的“心跳机制”玩到了极致!

悟空聊架构

微服务 Eureka 悟空聊架构 6月月更 心跳机制

如何使用物联网低代码平台进行报表管理?

AIRIOT

物联网 低代码平台

Java 字符串引用(String Interning)

HoneyMoose

Java String 手工引用指针

HoneyMoose

Java String 性能和优化

HoneyMoose

面试突击59:一个表中可以有多个自增列吗?

王磊

Java 面试

DOM编程

大熊G

JavaScript 前端 6月月更

leetcode 279. Perfect Squares 完全平方数(中等)

okokabcd

LeetCode 动态规划 算法与数据结构

JAVA SOCKET编程——TCP/UDP

乌龟哥哥

6月月更

Eureka的InstanceInfoReplicator类(服务注册辅助工具)

程序员欣宸

Java SpringCloud 6月月更

缓存穿透利器之「布隆过滤器」

Ayue、

redis 布隆过滤器

JVM调优简要思想及简单案例-老年代空间分配担保机制

zarmnosaj

6月月更

5道面试题,拿捏String底层原理!

码农参上

string 底层原理 死磕 Java 基础

Go Web 编程入门:验证器

宇宙之一粟

Go 语言 表单校验 6月月更

如何进行高效简洁的电子文档管理

小炮

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