spark常见转换算子(transformation)的操作
package com.meng.nan.day717import org.apache.log4j.{Level, Logger}
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDDimport scala.collection.mutable.ArrayBuffer
//常见转换算子(transformation)的操作例如
//map,flatmap,join,sample等object flatMapClass {def main(args: Array[String]): Unit = {Logger.getLogger("org.apache.spark").setLevel(Level.WARN)Logger.getLogger("org.apache.hadoop").setLevel(Level.WARN)Logger.getLogger("org.spark_project").setLevel(Level.WARN)
val conf=new SparkConf().setAppName("flatMapClass").setMaster("local[*]");val sc=new SparkContext(conf)val list=List("safdasd")val rdd:RDD[String]=sc.parallelize(list)//字符串拆分flatMap()val chrdd:RDD[(Char,Int)]=rdd.flatMap(str=>{val ab=ArrayBuffer[(Char,Int)]()for (ch<- str){ab.append((ch,1))}ab})
// chrdd.foreach(ch=>println(ch))//字符串一一映射mapval list1=1 to 9val lsrdd:RDD[Int]=sc.parallelize(list1)
// val mapRDD=lsrdd.map(num=>num * 7)
// println("partitions"+mapRDD.getNumPartitions)
// mapRDD.foreach(println)
// val mapRDD=lsrdd.map(num=>(num,1))
// val mapRDD=lsrdd.map((_,1))
// for (sc<-mapRDD){
// println(sc)
// }//filter过滤
// val flterRdd=lsrdd.filter(fl=>(fl%2==0))
// flterRdd.foreach(println)//union联合操作val list2=List(3,1,2,2,11,22,33,44)val lr:RDD[Int]=sc.parallelize(list2)val unRDD:RDD[Int]=lsrdd.union(lr)unRDD.foreach(println)
// 抽样算子sample
// val smRDD=lsrdd.sample(false,0.2)
// smRDD.foreach(println)
// println(smRDD.count())}
}
package com.meng.nan.day717import org.apache.log4j.{Level, Logger}
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.RDDobject JionClass {def main(args: Array[String]): Unit = {Logger.getLogger("org.apache.spark").setLevel(Level.WARN)Logger.getLogger("org.apache.hadoop").setLevel(Level.WARN)Logger.getLogger("org.spark_project").setLevel(Level.WARN)
//转换算子join操作所有的join操作,必须要求的RDD的类型时<K, V>// * K就是关联字段
val conf=new SparkConf().setMaster("local[*]").setAppName("JionClass")val sc=new SparkContext(conf)
jionOps(sc)}def jionOps(sc:SparkContext): Unit ={
val stu=List("1 刘冯曼娜 22 bd-1901-bj","2 常师 25 bd-1901-bj","3 张熹 24 bd-1901-sz","4 胡盼 18 bd-1901-wh"
)val scores = List("1 1 math 82","2 1 english 0","3 2 chinese 85.5","4 3 PE 99","5 10 math 99")//将字符串转为RDD形式val stuRDD:RDD[String]=sc.parallelize(stu)val scoresRDD:RDD[String]=sc.parallelize(scores)//查询所有学生信息//将学生表转化为map集合val stuMapRDD:RDD[(String,String)]=stuRDD.map(stringLine=>{val sid=stringLine.substring(0,1)val stuInf=stringLine.substring(1).trim(sid,stuInf)})//将成绩表转化为map集合val scoresMapRDD:RDD[(String,String)]=scoresRDD.map(scorLine=>{val filter=scorLine.split("\\s+")val sid=filter(1)val scoreInfo=filter(2)+" "+filter(3)(sid,scoreInfo)})
// //join操作val joinRDD:RDD[(String,(String,String))]=stuMapRDD.join(scoresMapRDD)
joinRDD.foreach{case (sid,(stuInf,scoreInfo))=>{println(s"sid:${sid}\tstuInf:${stuInf}\tscoreInfo:${scoreInfo}")}}
println("======================")//左连接查询val leftJoin:RDD[(String,(String,Option[String]))]=stuMapRDD.leftOuterJoin(scoresMapRDD)leftJoin.foreach { case (sid, (stuInf, scoreInfo)) => {println(s"sid${sid}\tstuInf:${stuInf}\tscoreInfo:${scoreInfo}")}}println("================================")//全连接
val fullMapJoin:RDD[(String,(Option[String],Option[String]))]=stuMapRDD.fullOuterJoin(scoresMapRDD)fullMapJoin.foreach{case (sid,(stuInf,scoreInfo))=>{println(s"sid:${sid}\tstuInfo:${stuInf}\tscoreInfo:${scoreInfo}")}}}
}
spark常见转换算子(transformation)的操作相关推荐
- spark应用程序转换_Spark—RDD编程常用转换算子代码实例
Spark-RDD编程常用转换算子代码实例 Spark rdd 常用 Transformation 实例: 1.def map[U: ClassTag](f: T => U): RDD[U] ...
- Spark 常用算子详解(转换算子、行动算子、控制算子)
Spark简介 Spark是专为大规模数据处理而设计的快速通用的计算引擎: Spark拥有Hadoop MapReduce所具有的优点,但是运行速度却比MapReduce有很大的提升,特别是在数据挖掘 ...
- Spark转换算子和执行算子
在Spark编程模式下,所有的操作被分为转换(transformation)和执行(action)两种. 一般来说,转换操作是对一个数据集里的所有记录执行某种函数,从而使记录发生改变;而执行通常是运行 ...
- Spark的RDD转换算子
目录 RDD转换算子 Value 类型 1. map 2. mapPartitions map 和mapPartitions 的区别 3. mapPartitionsWithIndex 4. flat ...
- spark中的转换算子和行动算子区别(transformations and actions)
算子(RDD Operations): 对于初学者来说,算子的概念比较抽象,算子可以直译为 "RDD的操作", 我们把它理解为RDD的方法即可 . 转换算子(transformat ...
- Spark转换算子大全以及案例实操
1.RDD 转换算子 RDD转换算子实际上就是换了名称的RDD方法 RDD 根据数据处理方式的不同将算子整体上分为 Value 类型.双 Value 类型和 Key-Value 类型 算子:Opera ...
- spark之RDD的转换算子与行为算子的具体使用
文章目录 1.Transform算子 1.1 map 1.2 flatmap 1.3 groupBy和groupBykey 1.4 filter 1.5 Mappartitions 1.6 mapVa ...
- Spark常用的算子以及Scala函数总结
上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习 快速带你晋级 阅读全文 > 正文共11264个字,7张图,预计阅读时间28分钟. Spark与Scala 首先, ...
- 【Spark】Spark的常用算子
Spark的常用算子 目录内容 Spark的常用算子 一.转换算子(Transformation) 二.行动算子(Action) 三.键值对算子(PairRDDFunctions) 四.文件系统算子( ...
最新文章
- 学python能赚什么外卖-用python模拟美团外卖骑手推送请求
- python常用模块之shelve模块
- 【计算理论】可判定性 ( 丘奇-图灵论题 | 可判定性引入 | 图灵机语言 | 图灵机结果 | 判定机 | 部分函数与全部函数 | 可判定性定义 )
- Android system.img 打包解包
- 2012,新的一年,新的开始
- linux编译内核的步骤
- SQLServer 2008安装教程
- 从软件的价值体系开始向技术的反向分析
- 第一阶段✦第一章☞信息化知识
- 盛金公式解一元三次方程_用盛金公式求解一元三次方程
- 东南大学破格保研挂科_东南大学破格保研挂科_兜兜转转终入四牌楼——东南大学保研心得...
- MaxCompute-ODPS SQL报错:Quota not enough,配额组资源不足
- MPB:中科院南土所褚海燕组-结构方程模型在土壤微生态中的应用
- 尘梦回还服务器在维护中是什么意思,20190925维护公告解读
- 如何解决Windows10系统空闲时间CPU占用高,风扇很响的问题?
- 练手项目2笔记之day01
- FirefoxOS横竖屏切换应用开发一般方法总结
- Redis之时间轮机制(五)
- Mac流程图制作工具推荐——Diagrams
- 【避坑 超详细】Ubuntu使用python的selenium以及chrome模拟真实浏览器访问网页