(关键概念)RDD操作,惰性求值/
- 从本地文件系统中加载数据创建RDD

读取文件:val lines = sc.textFile(“file:///home/cmj/student00/test/wordcount.txt”)
分词:val aftermap = lines.map(x=>x.split(" "))
res1: Array[String] = Array(hello world yep, hello world, hello)
将分词结果转换为键值对,例(hello,3)val mkKV=aftermap.map((_,1))

聚合:val afterreduce=mkKV.reduceByKey((x,y)=>(x+y))

保存:afterreduce.saveAsTextFile(“file:///home/cmj/student00/test/wordout1”)

写在一行里面:sc.textFile("file:///home/cmj/student00/test/wordcount.txt").flatMap(x=>x.split(" ")).map((_,1)).reduceByKey((x,y)=>(x+y)).saveAsTextFile("file:///home/cmj/student00/test/wordout2")
- 全路径打开idea

新建project


新建包

新建类

新建Object

实验主程序


添加java包

编辑Configurations,添加信息:


运行退出码是0说明运行成功

3. RDD分区
RDD是弹性分布式数据集,通常RDD很大,会被分成很多个分区,分别保存在不同的节点上
分区的作用(1)增加并行度(2)减少通信开销
RDD分区的一个原则是使得分区的个数尽量等于集群中的CPU核心(core)数目
对于不同的Spark部署模式而言(本地模式、Standalone模式、YARN模式、Mesos模式),都可以通过设置spark.default.parallelism这个参数的值,来配置默认的分区数目
创建RDD时手动指定分区个数
在调用textFile()和parallelize()方法的时候手动指定分区个数即可,语法格式如下:
sc.textFile(path, partitionNum)
其中,path参数用于指定要加载的文件的地址,partitionNum参数用于指定分区个数。



被折叠的 条评论
为什么被折叠?



