Spark学习笔记(二):Spark基础操作

1.对数组进行分区
(1)创建数组:val a1 = Array(1,2,3,4)
(2)对数组进行分区:val p1 = sc.parallelize(a1, 2)
(3)查询分区数量:p1.partitions.size
(4)查询每个分区的元素:p1.glom.collect
(5)查询全部数据:p1.collect
在这里插入图片描述

2.创建RDD
1中(1)(2)两步可以替换成val p1 = sc.makeRDD(List(1,2,3,4),2)
在这里插入图片描述
sc 指的是 Spark context,也就是Spark上下文。在spark-shell启动的时候有这个解释。
在这里插入图片描述

3.从文件读取数据
val f1 = sc.textFile(“file:///usr/local/liufeifei/hello.txt”, 2)
以行为单位读取数据
在这里插入图片描述在这里插入图片描述
当读取的文件不存在,调用sc.textFile方法并不会立刻报错,而是等到执行collect方法时才会报错。
在这里插入图片描述

4.transformation操作–map
val r1 = sc.makeRDD(List(1,2,3,4),2)
val r2 = r1.map{num=>num*2}
r2.collect
r2.glom.collect
在这里插入图片描述

5.transformation操作-flatMap
val r2 = sc.textFile(“file:///usr/local/liufeifei/hello.txt”, 2)
val result2 = r2.flatMap{data=>data.split(" ")}
在这里插入图片描述在这里插入图片描述

6.transformation操作–filter
val r3 = sc.makeRDD(List((“math”,100),(“english”,200),(“chinese”,300),(“math”,200)), 3)

val result3 = r3.filter{data=>data._2 > 150}
result3.collect

val result4 = r3.filter{data=>data._1.equals(“math”)}
result4.collect
在这里插入图片描述

7.transformation操作–mapPartitions
根据各个分区遍历求和。

val result1 = r1.mapPartitions{data=>
     val sumlist = List[Int]()
     var sum = 0
     while(data.hasNext){
     sum = sum + data.next
     }
     sumlist.::(sum).iterator
}

在这里插入图片描述
8.transformation操作–mapPartitionsWithIndex
根据分区遍历

val result2 = r1.mapPartitionsWithIndex{(index,data)=>{
     val sumlist = List[String]()
     var sum = 0
     while(data.hasNext){
     sum = sum + data.next
     }
     sumlist.::(index + "|" + sum).iterator
    }
}    

在这里插入图片描述
9.union、intersection、subtract、distinct操作
val r11 = sc.makeRDD(List(1,2,3),2)
val r12 = sc.makeRDD(List(3,4,5),2)
val r13 = r11.union(r12)
r13.collect
val r14 = r11.intersection(r12)
r14.collect
val r15 = r11.subtract(r12)
r15.collect
val r16 = r11.union(r12).distinct
在这里插入图片描述
在这里插入图片描述
10.groupBy和groupByKey操作
val r1 = sc.makeRDD(List((“math”,100), (“chinese”,200), (“english”,100),(“math”,20)))
val result1 = r1.groupByKey
result1.collect

val result2 = r1.groupBy{value=>value._1}
result2.collect
在这里插入图片描述
key和value调换顺序后,再根据key分组
val r2 = sc.makeRDD(List((100,“math”), (200,“chinese”), (100,“english”),(20,“math”)))
val result3 = r2.map{value=>(value._2, value._1)}.groupByKey
result3.collect
在这里插入图片描述
11.reduceByKey操作
val r1 = sc.makeRDD(List((“math”,100), (“chinese”,200), (“english”,100),(“math”,20)))
val result1 = r1.reduceByKey{(value,x)=>(value+x)}
result1.collect
在这里插入图片描述
12.统计单词出现的次数
val fileData = sc.textFile(“file:///usr/local/liufeifei/hello.txt”)
val splitData = fileData.flatMap{line => line.split(" ")}
splitData.collect
val wordMap = splitData.map{word=>(word,1)}
wordMap.collect
val wordCount = wordMap.reduceByKey{(value,x)=>value+x}
wordCount.collect
在这里插入图片描述
13.sortByKey和sortBy操作
val r1 = sc.makeRDD(List((“math”,100), (“chinese”,200), (“english”,100),(“math”,20)))
val result1 = r1.sortByKey(true)
result1.collect
val result2 = r1.sortByKey(false)
result2.collect
在这里插入图片描述
val r1 = sc.makeRDD(List((“math”,100), (“chinese”,200), (“english”,100),(“math”,20)))
val r2 = r1.map{data=>(data._2, data._1)}.sortByKey(true)
val result3 = r2.collect
在这里插入图片描述
val r1 = sc.makeRDD(List((“math”,100), (“chinese”,200), (“english”,100),(“math”,20)))
val result1 = r1.sortBy{data=>data._2}
result1.collect
在这里插入图片描述

14.coalesce操作
调整分区数量
val r1 = sc.makeRDD(List(1,2,3,4,5,6,7,8),2)
r1.partitions.size
val r2 = r1.coalesce(3,true)
r2.partitions.size
在这里插入图片描述

遇到问题:
Unable to connect to the server: net/http: TLS handshake timeout
在这里插入图片描述
参考:
Spark 读取文件系统的数据
Spark reduceByKey函数
Spark单词统计示例

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值