Apache Spark机器学习.2.4 数据集重组

简介:

2.4 数据集重组


本节,我们介绍数据集重组技术。我们将讨论一些特殊的Spark数据重组特征,以及一些可以用在Spark notebook中基于R语言数据重组的特别方法。

学习完本节,我们可以根据不同的机器学习需要进行数据集重组。

2.4.1 数据集重组任务

数据集重组虽然听起来比较容易,但还是很有挑战,并且非常耗时。

有两个常见的数据重组任务:一是,获取一个用于建模的数据子集;二是,以更高的层次汇总数据。例如,我们有学生数据,但是我们需要一些班级层面的数据集。为此,我们需要计算学生的一些属性,然后重组为新的数据。

处理数据重组,数据科学家和机器学习从业者经常使用他们熟悉的SQL和R语言编程工具。幸运的是,在Spark环境中,Spark SQL和R notebook能够让用户沿用他们熟悉的方式。我们将在下面两节中详细说明。

总体来讲,我们推荐使用SparkSQL进行数据集重组。然而,出于学习的需要,本节我们主要集中在Databricks环境中R notebook的使用。

在统计和数据科学方面,R语言和Spark在几个重要的应用场景都能很好地互补。默认情况下,Databricks的R notebook包括SparkR程序包,因此数据科学家可以轻松地受益于Spark在R语言分析方面的强大能力。除了SparkR,notebook可以方便地安装任何R语言的程序包。这里,我们将强调R notebook的几个特征。

 

为了在Databricks中使用R语言,在创建notebook时选择R语言作为编程语言。因为SparkR是Spark中新增加的特征,你需要记住将R notebook与1.4及以上版本的Spark集群关联。SparkR程序包是默认导入和配置的,你可以在R语言中执行Spark查询。

2.4.2 使用Spark SQL进行数据集重组

在上一节,我们讨论了使用SparkSQL进行数据集重组。

对于机器学习从业者,SQL是一个执行复杂数据汇集的有力工具,并有很多熟悉的例子。

SELECT是一个获取数据子集的命令。

对于数据汇集,机器学习从业者可以使用SparkSQL的sample.aggregate或窗口函数。

更多关于 SparkSQL的各种合并函数,请访问:https://spark.apache.org/docs/ 1.4.0/api/scala/index.html#org.apache.spark.sql.functions$。

更多关于 SparkSQL的窗口函数,请访问:https://databricks.com/blog/2015/ 07/15/ introducing-window-functions-in-spark-sql.html。

2.4.3 在Spark上使用R语言进行数据集重组

R语言有一个子集命令,通过下面的格式创建子集:

 

此外,我们也可以使用R语言的aggregate命令,如下所示:

 

然而,数据一般拥有多个层次的分组(嵌套处理、分割图设计,或重复测量),需要在多个层次上进行研究。例如,通过长期的临床研究,我们对次数、时间、病人与医疗的关系感兴趣。这些数据的存储和采集是按照简单和准确收集的方式进行优化,而不是按照你所需要的统计分析进行组合,这给你的分析工作带来更多困难。你需要流畅地重构这些数据以满足你的需要,但是很多软件包都无法完成这项任务,我们需要为每个新的实例编写新的代码。

尤其是R语言有一个主要用于数据重组的程序包reshape。reshape程序包使用一个融合和构造范例,这里,数据汇合成一个能够区分测量和识别变量形式, 然后将它“转换”到一个新的形状,它可能是一个DataFrame、列表或高维数组。

我们回顾一下2.2.3节,有4个表格进行数据分析。

 

在这个例子中,我们经常需要从第一个数据中获得一个子集,并与第4个数据合并。

相关文章
|
2月前
|
存储 机器学习/深度学习 Apache
如何将Apache Hudi应用于机器学习
如何将Apache Hudi应用于机器学习
24 0
|
9天前
|
机器学习/深度学习 分布式计算 算法
使用Spark进行机器学习
【5月更文挑战第2天】使用Spark进行机器学习
15 2
|
2月前
|
存储 机器学习/深度学习 Apache
Apache Hudi与机器学习特征存储
Apache Hudi与机器学习特征存储
32 0
|
2月前
|
存储 机器学习/深度学习 分布式计算
Apache Hudi在Hopsworks机器学习的应用
Apache Hudi在Hopsworks机器学习的应用
32 0
|
2月前
|
消息中间件 分布式计算 Serverless
CDC一键入湖:当 Apache Hudi DeltaStreamer 遇见 Serverless Spark
CDC一键入湖:当 Apache Hudi DeltaStreamer 遇见 Serverless Spark
55 2
|
2月前
|
存储 缓存 分布式计算
Spark【基础知识 02】【弹性式数据集RDDs】(部分图片来源于网络)
【2月更文挑战第13天】Spark【基础知识 02】【弹性式数据集RDDs】(部分图片来源于网络)
37 1
|
4月前
|
机器学习/深度学习 JavaScript 前端开发
机器学习 - [源码实现决策树小专题]决策树中子数据集的划分(不允许调用sklearn等库的源代码实现)
机器学习 - [源码实现决策树小专题]决策树中子数据集的划分(不允许调用sklearn等库的源代码实现)
40 0
|
4月前
|
机器学习/深度学习 分布式计算 算法
Spark MLlib简介与机器学习流程
Spark MLlib简介与机器学习流程
|
4月前
|
分布式计算 大数据 数据处理
Spark RDD(弹性分布式数据集)
Spark RDD(弹性分布式数据集)
|
4月前
|
SQL 分布式计算 数据处理
Apache Spark简介与历史发展
Apache Spark简介与历史发展

推荐镜像

更多