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)的操作相关推荐

  1. spark应用程序转换_Spark—RDD编程常用转换算子代码实例

    Spark-RDD编程常用转换算子代码实例 Spark rdd 常用 Transformation 实例: 1.def map[U: ClassTag](f: T => U): RDD[U]  ...

  2. Spark 常用算子详解(转换算子、行动算子、控制算子)

    Spark简介 Spark是专为大规模数据处理而设计的快速通用的计算引擎: Spark拥有Hadoop MapReduce所具有的优点,但是运行速度却比MapReduce有很大的提升,特别是在数据挖掘 ...

  3. Spark转换算子和执行算子

    在Spark编程模式下,所有的操作被分为转换(transformation)和执行(action)两种. 一般来说,转换操作是对一个数据集里的所有记录执行某种函数,从而使记录发生改变;而执行通常是运行 ...

  4. Spark的RDD转换算子

    目录 RDD转换算子 Value 类型 1. map 2. mapPartitions map 和mapPartitions 的区别 3. mapPartitionsWithIndex 4. flat ...

  5. spark中的转换算子和行动算子区别(transformations and actions)

    算子(RDD Operations): 对于初学者来说,算子的概念比较抽象,算子可以直译为 "RDD的操作", 我们把它理解为RDD的方法即可 . 转换算子(transformat ...

  6. Spark转换算子大全以及案例实操

    1.RDD 转换算子 RDD转换算子实际上就是换了名称的RDD方法 RDD 根据数据处理方式的不同将算子整体上分为 Value 类型.双 Value 类型和 Key-Value 类型 算子:Opera ...

  7. spark之RDD的转换算子与行为算子的具体使用

    文章目录 1.Transform算子 1.1 map 1.2 flatmap 1.3 groupBy和groupBykey 1.4 filter 1.5 Mappartitions 1.6 mapVa ...

  8. Spark常用的算子以及Scala函数总结

    上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习  快速带你晋级 阅读全文 > 正文共11264个字,7张图,预计阅读时间28分钟. Spark与Scala 首先, ...

  9. 【Spark】Spark的常用算子

    Spark的常用算子 目录内容 Spark的常用算子 一.转换算子(Transformation) 二.行动算子(Action) 三.键值对算子(PairRDDFunctions) 四.文件系统算子( ...

最新文章

  1. 学python能赚什么外卖-用python模拟美团外卖骑手推送请求
  2. python常用模块之shelve模块
  3. 【计算理论】可判定性 ( 丘奇-图灵论题 | 可判定性引入 | 图灵机语言 | 图灵机结果 | 判定机 | 部分函数与全部函数 | 可判定性定义 )
  4. Android system.img 打包解包
  5. 2012,新的一年,新的开始
  6. linux编译内核的步骤
  7. SQLServer 2008安装教程
  8. 从软件的价值体系开始向技术的反向分析
  9. 第一阶段✦第一章☞信息化知识
  10. 盛金公式解一元三次方程_用盛金公式求解一元三次方程
  11. 东南大学破格保研挂科_东南大学破格保研挂科_兜兜转转终入四牌楼——东南大学保研心得...
  12. MaxCompute-ODPS SQL报错:Quota not enough,配额组资源不足
  13. MPB:中科院南土所褚海燕组-结构方程模型在土壤微生态中的应用
  14. 尘梦回还服务器在维护中是什么意思,20190925维护公告解读
  15. 如何解决Windows10系统空闲时间CPU占用高,风扇很响的问题?
  16. 练手项目2笔记之day01
  17. FirefoxOS横竖屏切换应用开发一般方法总结
  18. Redis之时间轮机制(五)
  19. Mac流程图制作工具推荐——Diagrams
  20. 【避坑 超详细】Ubuntu使用python的selenium以及chrome模拟真实浏览器访问网页

热门文章

  1. PC、手机老是掉线该如何排查?
  2. vue 日历签到组件
  3. 传统企业怎么通过抖音引流到微信
  4. java调用jacob_使用Java中的JACOB运行个人宏
  5. 最快路由器服务器地址,快速设置路由器的方法
  6. OLED屏幕还未普及,移动VR没有想象中爆发那么快
  7. FaceNet 人脸比对框架 部署+测试
  8. elasticsearch 常见查询及聚合的JAVA API
  9. 都快2021了,你还不知道怎么成为优秀程序员?大牛推荐6个软件开发步骤
  10. html多页面之间如何通信,html5中sharedWorker实现多页面通信代码示例