栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

学习记录:Spark—RDD编程

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习记录:Spark—RDD编程

   最近一直在学习Spark的RDD编程,学习的过程中经常会踩到很多的坑。归根结底,其实是没有理解好RDD编程其中的原理。

学习的过程中值得注意的小细节(个人的一些偏门理解,帮助自己更好掌握)。

1.RDD中的其中一个元素中含有多个元素,类似一个列表在RDD中充当一个元素时,列表的相关的索引查询,切片操作同样适用。

#省略了前面的引用
array = ["Spark is fast","Hadoop is good"]
rdd1 = sc.parallelize(array)
rdd2 = rdd1.map(lambda x:x.split(" ")  #将rdd1中的每个元素中的内容以空格分隔开,得到[['Spark','is','fast'],['Hadoop','is','good']]
rdd3 = rdd2.map(lambda x:x[0])  #索引返回第0个,得到['Spark','Hadoop']
#rdd3 = rdd2.map(lambda x:x[0:2])
#索引返回第0-1个,得到[['Spark','is'],['Hadoop','is']]

2.利用map函数可以实现RDD生成RDD键值对,换而言之map函数可以实现对现有RDD的数据形态进行改变。

array = ['Spark','Hadoop','python','SQL','Big Data']
rdd1 = sc.parallelize(array)
rdd2 = rdd1.map(lambda x:(x,1))
#rdd2 = [('Spark',1),('Hadoop',1),('python',1),('SQL',1),('Big Data',1)]
rdd3 = rdd2.map(lambda x:x[0])
#rdd3 = ['Spark', 'Hadoop', 'python', 'SQL', 'Big Data']

3.利用filter()函数返回特定的值,可以采取key-value的思维,指定元素中特定值的‘key’,返回所有values。

array = ["Spark is fast","Hadoop is good"]
rdd1 = sc.parallelize(array)
rdd2 = rdd1.map(lambda x:x.split(" ")
rdd3 = rdd2.filter(lambda x:x[0] == 'Spark')
#返回x[0] = 'Spark'的所有值,rdd3=[['Spark', 'is', 'fast']]

4.union()与join(),两者都是合并rdd,但在合并形式上有所不同。

array1 = [('Spark',1),('Hadoop',1)]
array2 = [('Spark',2),('Hadoop',2)]
rdd1 = sc.parallelize(array1)
rdd2 = sc.parallelize(array2)
RDD1 = rdd1.union(rdd2)
#union类似并集,[('Spark',1),('Hadoop',1),('Spark',2),('Hadoop',2)]
RDD2 = rdd1.join(rdd2)
#join是内连接,[('Spark',(1,2)),('Hadoop',(1,2))]

后续的学习中遇到问题,会继续更新。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/897726.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号