Introduction to Big Data with Apache Spark 课程总结
课程主要实用内容:
a. 下载,安装visualbox
管理员身份运行;课程要求最新版4.3.28,如果c中遇到虚拟机打不开的,可以用4.2.12,不影响
b. 下载,安装vagrant,重启
管理员身份运行
c. 下载虚拟机
c1.将vagrant加入path,D:\HashiCorp\Vagrant\bin
c2.创建虚拟机存放的目录,比如myvagrant
c3.下载文件mooc-setup-master.zip,解压后,拷贝Vagrantfile到myvagrant
c4.打开visual box图形界面,进入cmd,cd到myvagrant,敲命令 vagrant up
开始下载虚拟机,并打开,如果下载完成,但是打开虚拟机出错;
可以到visual box 图形界面点击打开,碰到一下错误,可尝试用4.2.12版visual box
使用说明:i.打开关闭虚拟机:打开visual box 界面,cd进入myvagrant
vagrant up 打开虚拟机,vagrant halt 关闭虚拟机
ii.ipython notebook,进入http:\\localhost:8001
停止正在运行的notebook,点击running,停止
点某 .py文件,运行note book
iii.下载ssh软件,可登入虚拟机,地址为127.0.0.1,端口2222,用户名vagrant,密码vagrant
进入后,敲pyspark,可进入pyspark交互式界面
3.常用函数
Spark中Rdd的生命周期
创建RDD(parallelize、textFile等)
对RDD进行变换
(会创建新的RDD,不会改变原RDD,有
1.对每个元素进行操作-map,flatMap,mapValues
2.筛选 filter
3.排序 sortBy
3.合并结果 reduceByKey,groupByKey
4.合并两个rdd union,join,leftJoin,rightJoin)
以上步骤中rdd都只相当于一个操作手册,并没有真实地在内存中产生数据,称为lazy evaluation
缓存rdd到内存中 cache() ,判断是否cache,访问 .is_cached属性
触发evaluation(包括top,take,takeOrdered,takeSample,sum,count,distinct,reduce,collect,collectAsMap)
4.变量共享
spark有两种变量共享方式
a.广播 broadcast,broadcast后的变量每个partition都会存储一份,但是只能读取,不能修改
>>> b=sc.broadcast([1,2,3,4,5])
>>> sc.parallelize([0,0]).flatMap(lambdax:b.value)
b.累加器 accumulator,只能写,不能在worker被读取
如果累加器只是一个标量,使用很简单
>>> rdd = sc.parallelize([1,2,3])
>>> def f(x):
... global a
... a += x
>>> rdd.foreach(f)
>>> a.value
13
如果累加器是一个向量,需要定义AccumulatorParam,且zero方法和addInPlace都要实现
>>> from pyspark.accumulators import AccumulatorParam
>>> class VectorAccumulatorParam(AccumulatorParam):
... def zero(self, value):
... return [0.0] * len(value)
... def addInPlace(self, val1, val2):
... for i in xrange(len(val1)):
... val1[i] += val2[i]
... return val1
>>> va = sc.accumulator([1.0, 2.0, 3.0], VectorAccumulatorParam())
>>> va.value
[1.0, 2.0, 3.0]>>> defg(x):
... global va
... va += [x] * 3
>>> rdd.foreach(g)
>>> va.value
[7.0, 8.0, 9.0]
Introduction to Big Data with Apache Spark 课程总结的更多相关文章
- CS100.1x Introduction to Big Data with Apache Spark
CS100.1x简介 这门课主要讲数据科学,也就是data science以及怎么用Apache Spark去分析大数据. Course Software Setup 这门课主要介绍如何编写和调试Py ...
- Introduction to Big Data with PySpark
起因 大数据时代 大数据最近太热了,其主要有数据量大(Volume),数据类别复杂(Variety),数据处理速度快(Velocity)和数据真实性高(Veracity)4个特点,合起来被称为4V. ...
- Why Apache Spark is a Crossover Hit for Data Scientists [FWD]
Spark is a compelling multi-purpose platform for use cases that span investigative, as well as opera ...
- Introducing DataFrames in Apache Spark for Large Scale Data Science(中英双语)
文章标题 Introducing DataFrames in Apache Spark for Large Scale Data Science 一个用于大规模数据科学的API——DataFrame ...
- Using Apache Spark and MySQL for Data Analysis
What is Spark Apache Spark is a cluster computing framework, similar to Apache Hadoop. Wikipedia has ...
- Apache Spark : Introduction
看了一点<数据算法:Hadoop/Spark大数据处理技巧>,觉得有必要了解一下 Spark . 以上. Spark was introduced by Apache Software F ...
- 【译】Using .NET for Apache Spark to Analyze Log Data
.NET for Spark可用于处理成批数据.实时流.机器学习和ad-hoc查询.在这篇博客文章中,我们将探讨如何使用.NET for Spark执行一个非常流行的大数据任务,即日志分析. 1 什么 ...
- Apache Spark源码走读之5 -- DStream处理的容错性分析
欢迎转载,转载请注明出处,徽沪一郎,谢谢. 在流数据的处理过程中,为了保证处理结果的可信度(不能多算,也不能漏算),需要做到对所有的输入数据有且仅有一次处理.在Spark Streaming的处理机制 ...
- Spark(1) - Getting Started with Apache Spark
Introduction Apache Spark is a general-purpose cluster computing system to process big data workload ...
随机推荐
- javascript之数组
一.定义数组. 定义数组有两个方法: 1.var arr1 = []; //定义一个空数组 2.var arr2 = [1,2,3,"str1","str2"] ...
- Linux系统编程(20)——信号基本概念
信号及信号来源 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知 ...
- 【转】GCC警告选项例解 -- 不错
原文网址:http://blog.csdn.net/hcx25909/article/details/7383716 程序员是追求完美的一族,即使是一般的程序员大多也都不想看到自己的程序中有甚至那么一 ...
- Python高阶函数
在Python中,函数名也是一个变量,可以进行赋值 高阶函数是至少满足下列一个条件的函数: 接受一个或多个函数作为输入 输出一个函数 函数名也可以作为函数参数,还可以作为函数返回值 def f(n) ...
- Unity 手指触摸的方向(单手)
最近写了一个跑酷游戏,总结下里面的知识点:O(∩_∩)O~ using UnityEngine; using System.Collections; public class Demo : MonoB ...
- LR实战之Discuz开源论坛——登录脚本检查点
在开发Discuz登录脚本时,遇到的一个问题是怎么去验证虚拟用户真正的登录成功,当然,熟悉LoadRunner工具的人就会知道,在脚本中使用检查点,对,没错! 我们知道,LR检查点功能有两种:文本检查 ...
- C++实现20个设计模式
http://c.chinaitlab.com/special/sjms/Index.html 一个月下来,把常见的20个设计模式好好复习并且逐个用C++实现了一遍,收获还是很大的,很多东西看上去明白 ...
- Java - 泛型 ( Generic )
Java - 泛型 ( Generic ) > 泛型的特点 > 解决元素存储的安全性问题 > 解决获取数据元素时,需要类型强转的问题 ...
- 【SQL】大杂烩
--------------------------------- 索引 --------------------------------- 语法: CREATE [索引类型] INDEX 索引名称 ...
- log4net使用简介
平常我们在开发网站时,有一些比较重要的地方需要添加日志记录.一般日志记录分为两种:1)在数据库中添加一张日志表,用来记录用户操作并给用户提醒(用户可以看到). 2)在系统中添加一个日志文件,用来记录一 ...