《Scala机器学习》一一第1章 探索数据分析

简介:

第1章 探索数据分析

在本书深入研究复杂的数据分析方法之前,先来关注一些基本的数据探索任务,这些任务几乎会占据数据科学家80%~90%的工作时间。据估计,每年仅仅是数据准备、清洗、转换和数据聚合就有440亿美元的产值(Data Preparation in the Big Data Era by Federico Castanedo; Best Practices for Data Integration, O?Reilly Media, 2015)。即便如此,人们最近才开始把更多的时间花费在如何科学地开发最佳实践,以及为整个数据准备过程建立文档、教学材料的良好习惯上,这是一件令人惊讶的事情(Beautiful Data: The Stories Behind Elegant Data Solutions, edited by Toby Segaran and Jeff Hammerbacher, O?Reilly Media, 2009;Advanced Analytics with Spark: Patterns for Learning from Data at Scale by Sandy Ryza et al., O?Reilly Media, 2015)。
很少有数据科学家会对数据分析的具体工具和技术看法一致,因为有多种方式可进行数据分析,从UNIX命令行到使用非常流行的开源包,或商业的ETL和可视化工具等。本章重点介绍在笔记本电脑上如何通过Scala进行函数式编程。后面的章节会讨论如何利用这些技术在分布式框架Hadoop/Spark下进行数据分析。
那函数式编程有什么用呢?Spark用Scala开发是有原因的。函数式编程的很多基本原则(比如惰性求值、不变性、无副作用、列表推导式和单子(monad)),在分布式环境下做数据处理都表现得很好,特别是在大数据集上做数据准备和转换等任务时更是如此。也可在PC或笔记本上使用这些技术。通过笔记本电脑连接到分布式存储/处理集群就可处理多达数十TB的超级数据集。可以一次只涉及一个主题或关注一个领域,但通常进行数据采样或过滤时,不必考虑分区是否合适。本书使用Scala作为基本工具,必要时也会采用其他工具。
从某种意义上讲,Scala能实现其他语言所能实现的一切功能。Scala从根本上讲是一种高级语言,甚至可称其为脚本语言。Scala有自己的容器,并且实现了一些基本的算法,这些功能已经通过大量的应用程序(比如Java或C++)和时间的测试,程序员不必关心数据结构和算法实现的底层细节。本章也只会关注如何用Scala/Spark来实现高级任务。
本章会涉及如下主题:
安装Scala
学习简单的数据挖掘技术
学习如何下采样(downsample)原始数据集来提高效率
探讨在Scala上实现基本的数据转换和聚合
熟悉大数据处理工具,比如Spark和Spark Notebook
通过编程实现对数据集的简单可视化

相关文章
|
存储 缓存 流计算
Flink / Scala- BroadCast 广播流数据先到再处理 Source 数据
Flink 支持增加 DataStream KeyBy 之后 conncet BroadCastStream 形成 BroadConnectedStream,广播流内数据一般为不间断更新的上下文信息,这里介绍如果等待广播流初始化完毕再处理 Source 数据
1431 0
Flink / Scala- BroadCast 广播流数据先到再处理 Source 数据
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
49 3
|
数据采集 XML 编译器
Scala爬虫实战:采集网易云音乐热门歌单数据
Scala爬虫实战:采集网易云音乐热门歌单数据
|
存储 分布式计算 NoSQL
Flink / Scala - 使用 Jedis、JedisPool 作为 Source 读取数据
现在有一批数据写入多台 Redis 相同 key 的队列中,需要消费 Redis 队列作为 Flink Source,为了提高可用性,下面基于 JedisPool 进行队列的消费。
1022 0
Flink / Scala - 使用 Jedis、JedisPool 作为 Source 读取数据
|
JSON 分布式计算 Hadoop
Spark-数据读取与保存(Scala版)
Spark-数据读取与保存(Scala版)
|
分布式计算 Java API
Flink / Scala - DataSource 之 DataSet 获取数据总结
数据源创建初始数据集,这里主要以 DataSet 数据源为例,例如从文件或者从 collection 中创建,后续介绍 DataStreaming 的数据源获取方法。
445 0
Flink / Scala - DataSource 之 DataSet 获取数据总结
|
消息中间件 存储 Java
Flink / Scala - DataSet & DataStream Sink 输出数据详解
一.引言 Flink 的数据处理主要分三步,第一步 Source 为数据源,分为 DataSet 和 DataStreaming ,后一步为 Transformation 负责处理和转换数据,针对不同的 DataSource,Transformation 可能会存在差异,最后一步是 sink 负责将结果输出。前面介绍了 DataSet 的 Source 和 Transformation,这里介绍下 DataSet 和 DataStreaming 的 Sink 相关 API。 Tips: 下述代码区
611 0
Flink / Scala - DataSet & DataStream Sink 输出数据详解
|
消息中间件 监控 NoSQL
Flink / Scala - DataSource 之 DataStream 获取数据总结
DataStream API 得名于特殊的 DataStream 类,该类用于表示 Flink 程序中的数据集合。你可以认为 它们是可以包含重复项的不可变数据集合。这些数据可以是有界(有限)的,也可以是无界(无限)的,但用于处理它们的API是相同的。下面将介绍 DataStream 的常见初始化方法。...
1214 0
Flink / Scala - DataSource 之 DataStream 获取数据总结
|
存储 分布式计算 NoSQL
Flink / Scala - 使用 RedisSink 存储数据
现在有一批流数据想要存储到 Redis 中,离线可以使用 Spark + foreach 搞定,由于是多流 join 且带状态,所以 SparkStreaming + foreach 也无法实现,而 Flink 不支持 foreach 操作触发 execute,这里采用 RedisSink 代替实现 foreach 逻辑。
1248 0
Flink / Scala - 使用 RedisSink 存储数据
|
存储 XML 分布式计算
小六六学大数据之 Spark(Scala)(上)
前言 文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820… 种一棵树最好的时间是十年前,其次是现在
217 0