起因

大数据时代

大数据最近太热了,其主要有数据量大(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的更多相关文章

  1. CS100.1x Introduction to Big Data with Apache Spark

    CS100.1x简介 这门课主要讲数据科学,也就是data science以及怎么用Apache Spark去分析大数据. Course Software Setup 这门课主要介绍如何编写和调试Py ...

  2. Introduction to Spring Data MongoDB

    Introduction to Spring Data MongoDB I just announced the new Spring 5 modules in REST With Spring: & ...

  3. Introduction to Structured Data

    https://developers.google.com/search/docs/guides/intro-structured-data Structured data refers to kin ...

  4. Introduction to Big Data with Apache Spark 课程总结

    课程主要实用内容: 1.spark实验环境的搭建 2.4个lab的内容 3.常用函数 4.变量共享   1.spark实验环境的搭建(windows)   a. 下载,安装visualbox 管理员身 ...

  5. 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 ...

  6. 【转】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 ...

  7. Python For Data Analysis -- Pandas

    首先pandas的作者就是这本书的作者 对于Numpy,我们处理的对象是矩阵 pandas是基于numpy进行封装的,pandas的处理对象是二维表(tabular, spreadsheet-like ...

  8. 【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 ...

  9. 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 ...

随机推荐

  1. Mysql源码安装shell脚本

    #!/bin/bash#date:2019/1/20#by author zhangjia#install mysql#shell_name:mysql_auto_install.sh######## ...

  2. GIT学习---GIT&github的使用

    GIT&github入门 版本控制的原理: 根据md5进行文件的校验[MD5的特性就是每次的输入一致则输出也一致],对于每次的修改进行一次快照 版本控制的2个功能: 版本管理  +   协作开 ...

  3. Coursera-AndrewNg(吴恩达)机器学习笔记——第二周编程作业(线性回归)

    一.准备工作 从网站上将编程作业要求下载解压后,在Octave中使用cd命令将搜索目录移动到编程作业所在目录,然后使用ls命令检查是否移动正确.如: 提交作业:提交时候需要使用自己的登录邮箱和提交令牌 ...

  4. SparkSql实现Mysql到hive的数据流动

    今天去面试了一波,因为调度系统采用了SparkSql实现数据从Mysql到hive,在这一点上面试官很明显很不满我对于Spark的理解,19年的第一个面试就这么挂了. 有问题不怕,怕的是知道了问题还得 ...

  5. VB ASP 使用 now() 时默认格式调整方法

    修改注册表 [HKEY_USERS\.DEFAULT\Control Panel\International] "sShortDate"="yyyy-M-d" ...

  6. November 15th 2016 Week 47th Tuesday

    Success is finding satisfaction in giving a little more than you take. 成功就是付出比得到多,仍然心满意足. Can I find ...

  7. 跟我一起阅读Java源代码之HashMap(一)

    最近闲的很,想和大家一起学习并讨论下Java的一些源代码以及其实现的数据结构, 不是什么高水平的东西,有兴趣的随便看看 1. 为什么要用Map,以HashMap为例 很多时候我们有这样的需求,我们需要 ...

  8. AOP-Advisor-笔记

    一.Advisor接口 这个接口是一个通知者的顶层接口.它实现类持有一个通知(advice)和一个过滤器的引用.用过滤器来决定通知是否合适目标对象. 这个接口只有两个方法,所以将整个代码贴上来. /* ...

  9. Kubernetes-dns 服务搭建

    DNS 服务不是独立的系统服务,而是一种 addon ,作为插件来安装的,不是 kubernetes 集群必须的(但是非常推荐安装).可以把它看做运行在集群上的应用,只不过这个应用比较特殊而已. DN ...

  10. reverse_iterator和ostream_iterator

    每个容器都有反向迭代器(无需关联容器除外),reverse_iterator要和std::rbegin()以及std::end()配套使用,否则用了方向迭代器而不用rbegin()和rend()编译器 ...