文章目录
- Spark RDD算子
- 一、RDD 转换算子
- 1、Value 类型
- (1) map
Spark RDD算子
RDD 方法也叫做RDD算子,主要分为两类,第一类是用来做转换的,例如flatMap()
,Map()
方法,第二类是行动的,例如:collenct()
方法,只有触发了作业才会被执行。
一、RDD 转换算子
RDD 根据数据处理方式的不同将算子整体上分为Value
类型,双Value
类型和Key-value
类型。
1、Value 类型
(1) map
将处理的数据逐条
进行映射转换,这里的转换可以是类型的转换,也可以是值的转换。
package com.atguigu.bigdata.spark.core.wc.operator
import org.apache.spark.{SparkConf, SparkContext}
//RDD 算子转换类型
class Spark01_RDD_Transform {
}
object Spark01_RDD_Transform{
def main(args: Array[String]): Unit = {
//配置信息
val conf = new SparkConf().setMaster("local[*]").setAppName("RDD_zhuanhuan")
val context = new SparkContext(conf)
//TODO 算子 => map
val rdd = context.makeRDD(List(1, 2, 3, 4)) //基于内存创建一个RDD
// def hanshu(num:Int):Int = {
// num * 2
// }
//
// val value1 = rdd.map(hanshu)
// value1.collect().foreach(println)
val value = rdd.map(a => a * 2)
println(value.collect().foreach(println))
context.stop()
}
}
map 算子的小测试:从服务器日志数据 apache.log中获取用户请求URL资源的路径
思路:文件最右边的那个是文件的路径。可以使用map方法,里面split(" ")
方法用空格分隔开,然后再使用takeRight()
方法,取最右边的第一个元素,那就是文件的地址了
package com.atguigu.bigdata.spark.core.wc.operator
import org.apache.spark.{SparkConf, SparkContext}
//map 算子的小测试:从服务器日志数据 apache.log中获取用户请求URL资源的路径
class Spark02_RDD_test {
}
object Spark02_RDD_test{
def main(args: Array[String]): Unit = {
//配置信息
val conf = new SparkConf().setMaster("local[*]").setAppName("RDD_zhuanhuan")
val context = new SparkContext(conf)
//TODO 算子 => map
val rdd = context.textFile("datas/apache.log")
//长的字符串
//短的字符串
val value = rdd.map(
a => a.split(" ").takeRight(1)//将文件按照空格隔开,然后拿最右边的那一个数据
)
value.collect().foreach(println)
context.stop()
}
}