欢迎来到贱贱的博客

扩大
缩小

4 pyspark学习---RDD

开始新的东西,其实很多操作在第二篇的时候就有所介绍啦。在这里继续学习一遍加深一下印象。

1关于RDD

(1) RDD-----Resilient Distributed Dataset,弹性分布式数据集。这些元素在多个节点上运行和操作,以便在集群上进行并行处理。

(2)RDD是弹性得。

比如map操作,可以拆分成对数据块得直接计算而不涉及其他节点。这样得操作只是在一个节点上面直接得操作,不会影响RDD得操作。但是也有比如groupBy,在不完全知道每个key得分布得时候,必须遍历RDD所有得数据块,然后将相同得key汇聚。

(2)转换----->行动 

转换操作比如Fileter groupBy,map等

行动操作比如collect

2 例子

 1 # coding:utf-8
 2 from pyspark import SparkContext, SparkConf
 3 from operator import add
 4 sc = SparkContext()
 5 
 6 words = sc.parallelize (
 7    ["scala",
 8    "java",
 9    "hadoop",
10    "spark",
11    "akka",
12    "spark vs hadoop",
13    "pyspark",
14    "pyspark and spark"]
15 )
16 #输出rdd元素个数count
17 counts = words.count()
18 print counts
19 
20 #输出所有得元素collect
21 print 'elements in RDD->%s'%(words.collect())
22 
23 #输出满足条件得元素foreach
24 def f(x):print(x)
25 fore = words.foreach(f)
26 
27 #返回新的RDD 满足相应得条件 filter
28 words_filter = words.filter(lambda x: 'spark' in x).collect()
29 print words_filter
30 #返回新的RDD 满足相应得条件 map value都为1
31 words_map = words.map(lambda x: (x,1))
32 
33 #reduce 引入add
34 nums = sc.parallelize([1,2,3,4,5])
35 adding = nums.reduce(add)#15
36 
37 #cache 持久RDD 判断是否是持久
38 print words.persist().is_cached

好了 加油!

posted on 2018-04-03 10:10  L的存在  阅读(1704)  评论(0编辑  收藏  举报

导航