目前,Spark 1.4版本在社区已经进入投票阶段,在Github上也提供了1.4的分支版本。最近,Databricks的工程师撰写了博客,介绍了Spark 1.4为DataFrame新增的统计与数学函数。这篇博客介绍的函数主要包括:
\\- 随机数据生成(Random Data Generation) \\
- 概要与描述性统计(Summary and descriptive statistics) \\
- 协方差与相关性(Sample covariance and correlation) \\
- 交叉列表(Cross tabulation) \\
- 频率项(Frequent items) \\
- 数学函数(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\