Apache Spark机器学习.2.1 访问和加载数据集

简介:

摘要

Spark机器学习的数据准备

机器学习从业者和数据科学家时常耗费70%或80%的时间为机器学习项目准备数据。数据准备可能是很艰辛的工作,但是它影响到接下来的各方面工作,因此是非常必要和极其重要的。所以,在本章中,我们将讨论机器学习中所有必要的数据准备方面的内容,通常包括数据获取、数据清洗、数据集连接,再到特征开发,从而让我们为基于Spark平台构建机器学习模型准备好数据集。具体而言,我们将讨论前面提到的以下6个数据准备任务,然后在针对复用性和自动化的讨论中结束本章:

访问和加载数据集

开放可用的机器学习数据集

将数据集加载到Spark

使用Spark进行数据探索和可视化

数据清洗

处理数据缺失与不完整

基于Spark的数据清洗

数据清洗变得容易

一致性匹配

处理一致性问题

基于Spark的数据匹配

获得更好的数据匹配效果

数据重组

数据重组任务

基于Spark的数据重组

数据重组变得容易

数据连接

Spark SQL数据集连接

使用Spark SQL进行数据连接

数据连接变得容易

特征提取

特征提取的挑战

基于Spark的特征提取

特征提取变得容易

复用性和自动化

数据集预处理工作流

Spark pipelines预处理

数据集预处理自动化


2.1 访问和加载数据集


在本节,我们将回顾一些公开可用的数据集,并且讨论加载这些数据集到Spark的方法。然后,我们将回顾九种Spark上探索和可视化数据集的方法。

学习完本节,我们能够获取一些可用的数据集,把它们加载到Spark,然后开始对数据进行探索和可视化。

2.1.1 访问公开可用的数据集

就像程序开源运动使软件免费一样,也有非常活跃的数据开放运动,使得每一个研究者和分析师都可以自由获取这些数据。在全世界范围内,大多数国家政府收集的数据集是向公众开放的。例如http://www.data.gov/,这个网站有超过14万的数据集可供免费使用,包括农业、金融和教育等领域。

除了来自各政府机构的开放数据,许多研究机构也收集了很多非常有用的数据集,并且可被公众所用。这本书中我们将使用的有如下几个数据集:

印第安纳大学提供一个非常丰富的数据集,包括535亿个HTTP地址。想获取这些数据,请访问:http://cnets.indiana.edu/groups/nan/webtraffic/click-dataset/。

广为人知的加州大学欧文分校机器学习库提供超过300个数据集可供探索。想获取他们的数据集,请访问:https://archive.ics.uci.edu/ml/datasets.html。

匹兹堡大学的Tycho?项目提供了自1888年以来美国境内所有须向卫生署报告的疾病报告,这些报告以周为单位。想获取他们的数据集,请访问:http://www.tycho.pitt.edu/。

ICPSR拥有许多体量并不是很大,但是质量非常好,并且可用于研究的数据集。想获取他们的数据集,请访问:http://www.icpsr.umich.edu/index.html。

另外一个众所周知的数据集是1987年~2008年的航线性能数据,它的体量巨大,拥有1.2亿条记录,已经被用在许多研究和少量比赛中。想获取这些的数据集,请访问:http://statcomputing.org/dataexpo/2009/the-data.html。

2.1.2 加载数据集到Spark

有许多方法可以将数据集加载到Spark平台,或者直接连接数据源到Spark平台。由于Apache Spark每三周更新一次,其功能在不断提升,更新、更方便的加载数据方法,以及展现数据的方法有望能够及时提供给用户。

举例来说,在Spark 1.3版本以前, JdbcRDD是连接关系型数据源和传输数据元素到RDD的最受欢迎的方式。但是,从Spark 1.4版本开始,它通过一个内置的数据源API连接到任意一个使用Dataframe的 JDBC数据源。

加载数据并不是一个简单的任务,因为它通常涉及转换或解析原始数据,以及处理数据格式转换。Spark数据源API允许用户使用基于DataSource API的库来读取和写入来自不同系统的不同格式的DataFrame。同时,由于使用了Spark SQL查询优化器技术,Spark数据源API的数据存取功能十分高效。

想要加载DataFrame的数据集,最好使用sqlContext.load。为此,我们需要说明以下内容:

数据源名称:这是我们加载的数据源。

选项:对于特定的数据源有一些参数,例如,数据路径。

举例来说,我们可以使用下面的代码:

 

要导出数据集,用户可以使用dataframe.save或df.write来保存处理过的DataFrame到一个数据源。具体说明如下:

数据源名称:这是我们要保存的数据源。

保存模式:这是当数据已经存在时,我们应该做的。

选项:对于特定的数据源有一些参数,例如,数据路径。

creatExternalTable和SaveAsTable命令也是非常有用的。

有关使用Spark DataSource API的更多信息,请访问:https://databricks.com/blog/2015/01/09/spark-sql-data-sources-api-unified-data-access-for-the-spark-platform.html。

2.1.3 数据集探索和可视化

在Apache Spark中,有很多方法来进行一些数据集的初步探索和可视化,这些数据集可以使用不同的工具加载。用户可以直接通过Spark Shell使用Scala语言或Python语言。或者,用户可以使用notebook方法,就是在Spark环境中使用R语言或Python语言的notebook,类似DataBricks Workspace。另一种方法是使用Spark的MLlib。

或者,用户可以直接使用Spark SQL及其相关库,如广受欢迎的Panda库,进行一些简单的数据探索。

如果数据集已经转化成Spark DataFrame,用户可以使用df.describe().show()获取一些简单的含样本总体特征的统计数据,例如所有列(变量)的均值、标准差、最小值和最大值。

如果DataFrame有很多列,用户应当使用df.describe(column1, column2, …).show()语句来指定列,以便于仅获取他们感兴趣的列的描述性统计数据。你也可以只使用这个命令选择你需要的统计数据:

 

除此之外,一些经常使用的协方差、相关运算、交叉列表命令如下:

 

如果使用DataBricks workspace,用户可以创建R notebook,那么他们将回到熟悉的R语言环境中,并且可以访问所有的R语言程序包,他们可以使用notebook方法进行数据集的交互探索和可视化研究。看一看下面的例子:

 

 

从现在开始,我们将会大量地使用DataBricks Workspace,建议用户在https://accounts.cloud.databricks.com/registration.html#signup注册一个试用账号。在网站主菜单栏的左上角设置一些群集,具体如下:

 

然后,用户可以到相同的主菜单中,单击“Workspace”右侧的向下箭头并导航到“Create | New Notebook”,创建一个notebook,如下图所示:

 

当出现Create Notebook对话框时,需要执行以下操作:

为你的notebook输入一个唯一的名字。

对于语言,单击下拉菜单,选择R语言。

对于集群,单击下拉菜单并选择你之前创建的集群。

相关文章
|
1月前
|
分布式计算 大数据 Apache
利用.NET进行大数据处理:Apache Spark与.NET for Apache Spark
【10月更文挑战第15天】随着大数据成为企业决策和技术创新的关键驱动力,Apache Spark作为高效的大数据处理引擎,广受青睐。然而,.NET开发者面临使用Spark的门槛。本文介绍.NET for Apache Spark,展示如何通过C#和F#等.NET语言,结合Spark的强大功能进行大数据处理,简化开发流程并提升效率。示例代码演示了读取CSV文件及统计分析的基本操作,突显了.NET for Apache Spark的易用性和强大功能。
39 1
|
3月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
4月前
|
分布式计算 大数据 Spark
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
《Spark大数据处理:技术、应用与性能优化》深入浅出介绍Spark核心,涵盖部署、实战与性能调优,适合初学者。作者基于微软和IBM经验,解析Spark工作机制,探讨BDAS生态,提供实践案例,助力快速掌握。书中亦讨论性能优化策略。[PDF下载链接](https://zhangfeidezhu.com/?p=347)。![Spark Web UI](https://img-blog.csdnimg.cn/direct/16aaadbb4e13410f8cb2727c3786cc9e.png#pic_center)
152 1
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
|
3月前
|
SQL 机器学习/深度学习 开发工具
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
|
3月前
|
分布式计算 Hadoop 大数据
大数据处理框架在零售业的应用:Apache Hadoop与Apache Spark
【8月更文挑战第20天】Apache Hadoop和Apache Spark为处理海量零售户数据提供了强大的支持
66 0
|
3月前
|
分布式计算 Serverless 数据处理
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
212 0
|
3月前
|
存储 Ubuntu Linux
如何在 Ubuntu 12.04 上使用 Apache 配置 WebDAV 访问
如何在 Ubuntu 12.04 上使用 Apache 配置 WebDAV 访问
92 0
|
5月前
|
Apache
apache指定ip可访问,并输出指定错误
apache指定ip可访问,并输出指定错误
24 1
|
4月前
|
分布式计算 Apache Spark
|
5月前
|
分布式计算 大数据 数据处理
Apache Spark在大数据处理中的应用
Apache Spark是大数据处理的热门工具,由AMPLab开发并捐赠给Apache软件基金会。它以内存计算和优化的执行引擎著称,提供比Hadoop更快的处理速度,支持批处理、交互式查询、流处理和机器学习。Spark架构包括Driver、Master、Worker Node和Executor,核心组件有RDD、DataFrame、Dataset、Spark SQL、Spark Streaming、MLlib和GraphX。文章通过代码示例展示了Spark在批处理、交互式查询和实时数据处理中的应用,并讨论了其优势(高性能、易用性、通用性和集成性)和挑战。【6月更文挑战第11天】
148 6

推荐镜像

更多
下一篇
无影云桌面