SparkContext, map, flatMap, zip以及例程wordcount
SparkContext
通常作为入口函数,可以创建并返回一个RDD。
如把Spark集群当作服务端那Spark Driver就是客户端,SparkContext则是客户端的核心;
如注释所说 SparkContext用于连接Spark集群、创建RDD、累加器(accumlator)、广播变量(broadcast variables)

map操作:
会对每一条输入进行指定的操作,然后为每一条输入返回一个对象; flatMap操作:
“先映射后扁平化”
操作1:同map函数一样:对每一条输入进行指定的操作,然后为每一条输入返回一个对象
操作2:最后将所有对象合并为一个对象
zip函数:
x = [1, 2, 3]
y = [4, 5, 6, 7]
xy = zip(x, y)
print xy #[(1, 4), (2, 5), (3, 6)]
例程WordCount:
from pyspark import SparkContext
sc = SparkContext('local')
'''
在一个Spark程序的开始部分,有好多是用sparkContext的parallelize制作RDD的,
是ParallelCollectionRDD,创建一个并行集合。
doc这里包含2个task
'''
doc = sc.parallelize([['a', 'b', 'c'], ['b', 'd', 'd']])
print(doc.count()) #
'''
map操作:会对每一条输入进行指定的操作,然后为每一条输入返回一个对象;
flatMap操作:“先映射后扁平化”
操作1:同map函数一样:对每一条输入进行指定的操作,然后为每一条输入返回一个对象
操作2:最后将所有对象合并为一个对象
'''
words = doc.map(lambda d: d).collect()
print(words)
words = doc.flatMap(lambda d: d).collect()
print(words)
words = doc.flatMap(lambda d: d).distinct().collect()
print(words)
'''
zip(list1, list2)把list1,list2变成一个list(e1(list1), e1(list2),e2...)
这里把字符给标号(0 : len(words))
'''
word_dict = {w: i for w, i in zip(words, range(len(words)))}
'''
broadcast将变量word_dict高效的传递给每一个子节点
word_dict_b就是word_dict在子节点处理函数中的别名,内容是一致的区别就是要是用.value来用里面的值
'''
word_dict_b = sc.broadcast(word_dict)
def word_count_per_doc(d):
dict_tmp = {}
wd = word_dict_b.value
for w in d:
dict_tmp[wd[w]] = dict_tmp.get(wd[w], 0) + 1
return dict_tmp
'''
每一个doc都会调用一次 word_count_per_doc
'''
print(doc.map(word_count_per_doc).collect())
print("successful!")
SparkContext, map, flatMap, zip以及例程wordcount的更多相关文章
- RxJava【变换】操作符 map flatMap concatMap buffer MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- python几个重要的函数(lambda,filter,reduce,map,zip)
一.匿名函数lambda lambda argument1,argument2,...argumentN :expression using arguments 1.lambda是一个表达式,而不是一 ...
- Spark 学习笔记之 map/flatMap/filter/mapPartitions/mapPartitionsWithIndex/sample
map/flatMap/filter/mapPartitions/mapPartitionsWithIndex/sample:
- 函数进阶· 第3篇《常用内置函数filter()、map()、zip(),怎么用的呢?》
坚持原创输出,点击蓝字关注我吧 作者:清菡 博客:oschina.云+社区.知乎等各大平台都有. 由于微信公众号推送改为了信息流的形式,防止走丢,请给加个星标 ,你就可以第一时间接收到本公众号的推送! ...
- map & flatMap 浅析
我之前一直以为我是懂 map 和 flatMap 的.但是直到我看到别人说:「一个实现了 flatMap 方法的类型其实就是 monad.」我又发现这个熟悉的东西变得陌生起来,本节烧脑体操打算更细致一 ...
- Swift --> Map & FlatMap
转载自:https://segmentfault.com/a/1190000004050907 Map map函数能够被数组调用,它接受一个闭包作为参数,作用于数组中的每个元素.闭包返回一个变换后的元 ...
- python迭代和解析(3):range、map、zip、filter和reduce函数
解析.迭代和生成系列文章:https://www.cnblogs.com/f-ck-need-u/p/9832640.html range range()是一个内置函数,它返回一个数字序列,功能和Li ...
- Python——高阶函数——map filter zip
一.map函数 1.作用:它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回. 2.实例 def f(x): return x* ...
- Python---高级函数map, filter, zip, enumerate等的用法
今天看自然语言处理这本书的时候,被这里的高级函数的概念吸引了,因为我觉得所有的函数都只是函数而已,是为了实现特定功能而实现的,不应该有高级,低级之分啊!不过了解之后,发现这几个函数确实是有点高级,非常 ...
随机推荐
- C#中使用 Oracle的事务与存储过程
1 存储过程 1.1 不带参数,没有返回值 创建表 create table test (ID number, NAME varchar2(), SEX varchar2(), AGE number, ...
- BIOS Setup
一般而言,普通的计算机系统应用不必关注BIOS的设置.但是如果涉及到主板集成声卡,网卡,或需要进行远程网络唤醒等操作时,必须在BIOS中设置相应参数才能使电脑正常工作.BIOS能对硬件设备进行初始 ...
- 文本分类——NaiveBayes
前面文章已经介绍了朴素贝叶斯算法的原理,这里基于NavieBayes算法对newsgroup文本进行分类測试. 文中代码參考:http://blog.csdn.net/jiangliqing1234/ ...
- Python学习笔记_Python对象
Python学习笔记_Python对象 Python对象 标准类型 其它内建类型 类型对象和type类型对象 Python的Null对象None 标准类型操作符 对象值的比較 对象身份比較 布尔类型 ...
- javascript返回顶端源代码
<div style="display:none" id="goTopBtn"><img src="http://www.unity ...
- CListCtrl在处理NM_CLICK的时候,怎样推断Ctrl SHIFT ALT键是否按下
百度 NMITEMACTIVATE 在 NM_CLICK 的处理函数中.将 NMHDR 结构强制转换成 NMITEMACTIVATE.这一步MS已经帮助我们完毕了,当中,结构体中的 uKeyFlag ...
- 开发,从需求出发 · 之二 造飞机的工厂
CD镇楼~~! 如今.让我们切换到后端开发者的角度看问题.我们须要做的是实现一下这个类,让它返回真实的业务数据. package cn.com.sitefromscrath.service; impo ...
- hadoop分布式安装部署具体视频教程(网盘附配好环境的CentOS虚拟机文件/hadoop配置文件)
參考资源下载:http://pan.baidu.com/s/1ntwUij3视频安装教程:hadoop安装.flvVirtualBox虚拟机:hadoop.part1-part5.rarhadoop文 ...
- lamdba匿名函数 sored()函数 filter()函数 map函数() 递归函数
帅爆太阳的男人 1,lamdba匿名函数:为了解决一下简单的需求而设计的一句话函数,语法: 函数名 = lambda 参数: 返回值 def func(n): return n*n print(fun ...
- 关于Android热点模式下的UDP广播
最近尝试让easylink3在热点模式下连接,发现用普通的广播地址会报错,Network unreachable 尝试按照stackoverflow上的方法: public static int ge ...