Introduction to Big Data with PySpark
起因
大数据时代
大数据最近太热了,其主要有数据量大(Volume),数据类别复杂(Variety),数据处理速度快(Velocity)和数据真实性高(Veracity)4个特点,合起来被称为4V。
大数据中的数据量非常巨大,传统的关系型数据库已经无法满足对大数据的处理要求。此时,分布式计算应运而生。分布式计算就是把一组计算机通过网络相互连接组成分散系统,然后将需要处理的大量数据分散成多个部分,交由分散系统内的计算机组同时计算,最后将这些计算结果合并得到最终的结果。
过去,分布式计算理论比较复杂,技术实现比较困难,因此在处理大数据方面,集中式计算一直是主流解决方案。2003年到2004年间,Google发表了MapReduce、GFS(Google File System)和BigTable三篇技术论文,提出了一套全新的分布式计算理论。此三篇论文也就成了分布式计算的技术核心。
三大分布式计算框架
由于Google没有开源Google分布式计算模型的技术实现,所以其他互联网公司只能根据Google三篇技术论文中的相关原理,搭建自己的分布式计算系统。目前的主要三大分布式计算框架分别是Hadoop,Spark和Storm。
Yahoo的工程师Doug Cutting和Mike Cafarella在2005年合作开发了分布式计算系统Hadoop。尽管和Google内部使用的分布式计算系统原理相同,但是Hadoop在运算速度上依然达不到Google论文中的标准。但是Hadoop的开源特性使其成为分布式计算系统的事实上的国际标准。而Storm主要用于在线实时计算,这里不多介绍。
Spark也是Apache基金会的开源项目,它由加州大学伯克利分校的实验室开发。它在Hadoop的基础上进行了一些架构上的改良。Spark与Hadoop最大的不同点在于,Hadoop使用硬盘来存储数据,而Spark使用内存来存储数据,因此理论上Spark可以提供超过Hadoop 10到100倍的运算速度。
PySpark
这里选择了PySpark介绍,主要原因是Scala学习成本高,可读性不如Python,Java写起来太难看。相比之下,PySpark简直是入门Spark首选。但是网上PySpark的资料实在有限,包括相关书籍大部分也是用Scala。而我在学习过程中除了看PySpark官网API,也碰到了两门非常好的公开课:BerkeleyX的CS100.1x和BerkeleyX的CS190.1x,这两门公开课均来自于edX。不过由于可能改版,我这里介绍的这两门课已经无法注册学习,新改版的课分成了三门,大家有兴趣看看啥时候开课了可以选一下,地址如下。
内容简介
本系列博客的内容均来源自BerkeleyX的CS100.1x和BerkeleyX的CS190.1x,这两门课程名分别叫Introduction to Big Data with Apache Spark和Scalable Machine Learning。
内容安排
本系列博客的顺序会以课程的顺序讲解。课程内容不是我们这里的重点,我会以一篇博客来把一门课程的内容挑重点总结。作业将直接以ipynb文件名命名。
博客的重点
本系列博客主要讲应用,也就是代码层面会介绍的比较多,所以有关Spark系统方面的知识,我在这里不会过多的涉及到,但是会介绍一些基本的概念给大家,这些知识会足够用到实际应用。
实际应用
本系列博客的实际应用均来自其作业。两门可能均有5次大作业,难度循循渐进,非常适合入门和学习。
github
我会把相关作业的ipynb文件放到我的github,方便大家下载了自己学习。
Introduction to Big Data with PySpark的更多相关文章
- CS100.1x Introduction to Big Data with Apache Spark
CS100.1x简介 这门课主要讲数据科学,也就是data science以及怎么用Apache Spark去分析大数据. Course Software Setup 这门课主要介绍如何编写和调试Py ...
- Introduction to Spring Data MongoDB
Introduction to Spring Data MongoDB I just announced the new Spring 5 modules in REST With Spring: & ...
- Introduction to Structured Data
https://developers.google.com/search/docs/guides/intro-structured-data Structured data refers to kin ...
- Introduction to Big Data with Apache Spark 课程总结
课程主要实用内容: 1.spark实验环境的搭建 2.4个lab的内容 3.常用函数 4.变量共享 1.spark实验环境的搭建(windows) a. 下载,安装visualbox 管理员身 ...
- Introduction to Structured Data json的2种形式 JAVA解析JSON数据 - JsonArray JsonObject
https://developers.google.com/search/docs/guides/intro-structured-data Structured data refers to kin ...
- 【转】The most comprehensive Data Science learning plan for 2017
I joined Analytics Vidhya as an intern last summer. I had no clue what was in store for me. I had be ...
- Python For Data Analysis -- Pandas
首先pandas的作者就是这本书的作者 对于Numpy,我们处理的对象是矩阵 pandas是基于numpy进行封装的,pandas的处理对象是二维表(tabular, spreadsheet-like ...
- 【Repost】A Practical Intro to Data Science
Are you a interested in taking a course with us? Learn about our programs or contact us at hello@zip ...
- 100 open source Big Data architecture papers for data professionals
zhuan :https://www.linkedin.com/pulse/100-open-source-big-data-architecture-papers-anil-madan Big Da ...
随机推荐
- Python学习---IO的异步[asyncio模块(no-http)]
Asyncio进行异步IO请求操作: 1. @asyncio.coroutine 装饰任务函数 2. 函数内配合yield from 和装饰器@asyncio.coroutine 配合使用[固定格式 ...
- Linux 用户和用户组详解
用户分类 超级用户:UID范围 0 root用户:uid=0(root) gid=0(root) groups=0(root) 普通用户:由管理员创建,UID范围(500-65535) --> ...
- Django之Model (ORM)
传统操作数据库 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层 ...
- 翻新并行程序设计的认知整理版(state of the art parallel)
近几年,业内对并行和并发积累了丰富的经验.有了较深刻的理解.但之前积累的大量教材,在当今的软硬件体系下.反而都成了负面教材.所以,有必要加强宣传,翻新大家的认知. 首先.天地倒悬,结论先行:当你须要并 ...
- myFocus 焦点图/轮播插件
最近产品突然就来个需求,要加轮播图,而且是立马要上线,于是乎发现了一个超级简便好用的轮播图插件myFocus,而且myFocus提供很多种风格,可以选择. 这里是使用说明 http://www.chh ...
- 代码收藏系列--php--生成简短唯一订单号
/** * 生成商家交易单号 * <br />特点:不重复 * <br />示例: * <br />普通付款:array('shop_id'=>1,'prod ...
- 1349: Taking Pebbles (博弈 打表找规律)
1349: Taking Pebbles Submit Page Summary Time Limit: 1 Sec Memory Limit: 128 Mb Submit ...
- 【html】文字排版
Web开发过程中文字排版,默认的情况下,行末的长单词会撑开容器. 我们想要的是(像word一样.能够自动换行.既不撑大容器.也不强制拆开行末单词.并且不会隐藏行末单词的多余字母) ①不能撑开容器 ②完 ...
- 笔记:long、longlong、int、float、NSString相互转换
NSString *"; // 1.字符串转int int intString = [string intValue]; // 2.int转字符串 NSString *stringInt = ...
- js replace 全局替换
js 的replace 默认替换只替换第一个匹配的字符,如果字符串有超过两个以上的对应字符就无法进行替换,这时候就要进行一点操作,进行全部替换. <script language="j ...