设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

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

2015-6-9 22:41| 发布者: joejoe0332| 查看: 1381| 评论: 0|原作者: 张逸|来自: InfoQ

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

目前,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://www.infoq.com/cn/news/2015/06/Spark-DataFrame?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部