Spark RDD基础操作
来源:互联网 发布:淘宝知识产权申诉 编辑:程序博客网 时间:2024/05/21 10:56
sc = SparkContext('local', 'pyspark')
#sc = SparkContext('spark://ha-nn-001:7077', 'pyspark')a.从本地内存中构造1:makeRDD方法
val rdd01 = sc.makeRDD(List(1,2,3,4,5,6))
2:parallelize方法
val rdd01 = sc.parallelize(List(1,2,3,4,5,6))b.通过文件系统构造,即将已有文件初始化为RDD b.1文件路径处理#使用os.path.join()拼接路径
import os
path=os.path.join('user','home','nave.txt')
#path会自动返回user/home/nave.txt,好处是会根据不同的系统选择连接符为/ 或 \
#直接拼路径
import os
cwd = os.getcwd() #记录当前的python路径
rdd = sc.textFile("file://" + cwd + "/names/yob1880.txt") #file:// 是告诉spark到本地去找文档b.2 初始化本地文件,初始化后每一行会被看成一个itemrdd = sc.textFile("file://" + cwd + "/names/yob1880.txt") #file:// 是告诉spark到本地去找文档
导入整个文档,整个文档作为一个item
rdd = sc.wholeTextFiles("file://" + cwd + "/names")b.2 初始化集群HDFS上的文件rdd = sc.textFile(cwd + "/names/yob1880.txt") 查看RDD信息查看RDD文件的内容rdd :查看RDD的打开地址直接输入rdd文件名rdd.first():显示rdd的第一条itemrdd文件名.first()rdd.count():查看rdd中的记录数rdd文件名.count() transformation:转化操作仅仅是对RDD下达操作指令,Spark仅仅会记录要进行的操作,并不执行操作,直到需要执行action指令时才会执行操作。rdd.map(func):
对rdd中的每一条item执行func,并返回一个新的rdd文件quaresRDD = numbersRDD.map(lambda x: x**2) rdd.flatMap():
对RDD中的item执行同一个操作以后得到一个list,然后以平铺的方式把这些list里所有的结果组成新的list类似appendsentencesRDD = sc.parallelize(['Hello world', 'My name is Patrick'])
wordsRDD = sentencesRDD.flatMap(lambda sentence: sentence.split(" "))
结果:['Hello', 'world', 'My', 'name', 'is', 'Patrick']
若使用map:
wordsRDD = sentencesRDD.map(lambda sentence: sentence.split(" "))
结果:['Hello', 'world', 'My', 'name', 'is', 'Patrick']rdd.fiiter(func):
过滤功能,将所有符合函数条件的item组成一个新的list输出rddM = (rdd.filter(lambda x: x is not None and x.startswith('M')))rdd.distinct():
对RDD中的item去重rdd文件名.distinct()rdd.sample(withReplacement, fraction, seed):
取样函数withReplacement:这个值如果是true时,采用PoissonSampler抽样器(Poisson分布),否则使用BernoulliSampler的抽样器.
Fraction:一个大于0,小于或等于1的小数值,用于控制要读取的数据所占整个数据集的概率.
Seed:这个值如果没有传入,默认值是一个0~Long.maxvalue之间的整数.rdd1.union(rdd2):
所有rdd1和rdd2中的item组合numbersRDD.union(moreNumbersRDD).collect()rdd1.intersection(rdd2):
rdd1 和 rdd2的交集numbersRDD.intersection(moreNumbersRDD).collect()rdd1.substract(rdd2):
所有在rdd1中但不在rdd2中的item(差集)numbersRDD.subtract(moreNumbersRDD).collect()rdd1.cartesian(rdd2):
rdd1 和 rdd2中所有的元素笛卡尔乘积numbersRDD.cartesian(moreNumbersRDD).collect() action:执行操作输出transformation的执行结果rdd.collect():
计算所有的items并返回所有的结果到driver端,接着 collect()会以Python list的形式返回结果rdd.collect()rdd.first():
和上面是类似的,不过只返回第1个itemrdd.first()rdd.take(n):
类似,但是返回n个itemrdd.take(n)rdd.count():
计算RDD中item的个数rdd.count()rdd.top(n):
返回头n个items,按照自然结果排序rdd.top(n)rdd.reduce():
对RDD中的items做聚合rdd = sc.parallelize(range(1,10+1))
rdd.reduce(lambda x, y: x + y)
#实际上是对rdd里面所有的元素进行求和,reduce 可以设定两个未知数,并对两个未知数进行处理
#处理方式,元素1=x,元素2=y,xy计算的结果作为x,元素3作为y,直到对所有的结果执行了操作 pair RDDs transformation操作以元组形式组织的k-v对(key, value),叫做pair RDDs生成pair Tddrdd = sc.parallelize(["Hello hello", "Hello New York", "York says hello"])
resultRDD = (
rdd
.flatMap(lambda sentence: sentence.split(" ")) # split into words
.map(lambda word: word.lower()) # lowercase
.map(lambda word: (word, 1)) # count each appearance
.reduceByKey(lambda x, y: x + y) # add counts for each word
.sortByKey()
)
resultRDD.collect()reduceByKey():
对所有有着相同key的items的value执行reduce操作参照上例groupByKey():
返回类似(key, listOfValues)元组的RDD,后面的value List 是同一个key下面的resultRDD.groupByKey().collect()sortByKey():
按照key排序参照上例countByKey():
按照key去对item个数进行统计RDD.countByKey()collectAsMap():
和collect有些类似,但是返回的是k-v的字典 join:
只合并具有相同键值的项,没有相同的不显示homesRDD.join(lifeQualityRDD).collect()
阅读全文
0 0
- Spark RDD基础操作
- Spark 基础及RDD基本操作
- Spark 基础及RDD基本操作
- Spark 基础及RDD基本操作
- [Spark]Spark RDD 指南四 RDD操作
- Spark之RDD基础
- Spark-RDD编程基础
- Spark RDD基础
- Spark RDD基础(一)
- Spark内核:RDD基础
- Spark RDD操作
- spark RDD keyvalue操作
- Spark RDD transformation操作
- spark RDD transformation操作
- spark RDD 基本操作
- spark rdd 操作
- Spark RDD创建操作
- Spark中RDD操作
- Remove Duplicates from Sorted Array有序数组去重复
- $.get()方法
- js setTimeout 和 setInterval
- 今日头条的style类和权限
- 通过HttpServletResponseWrapper获取到返回body
- Spark RDD基础操作
- 编译器与解释器的区别
- 安全的使用new分配内存
- mysql数据库设置远程连接权限
- hexo安装next主题的步骤
- Python
- Kylin报错classnotfound:org.apache.hadoop.hive.serde2.typeinfo.typeInfo
- Java垃圾回收机制
- 转载:管道通信总结