首页 > 其他分享 >DataFrame中的转换算子2

DataFrame中的转换算子2

时间:2022-08-30 00:22:39浏览次数:49  
标签:转换 val DataFrame ---------------------- dataFrame 算子 println -------------------

val sparkConf = new SparkConf().setMaster("local[2]").setAppName("tran")
val sparkSession = SparkSession.builder().config(sparkConf).getOrCreate()

val seq:Seq[Student] = Array(Student("zs",20,"男"),Student("ls",21,"女"),Student("ww",22,"男"))
val rdd:RDD[Student] = sparkSession.sparkContext.makeRDD(seq)
val dataFrame:DataFrame = sparkSession.createDataFrame(rdd,classOf[Student])

val seq1:Seq[StudentScore] = Array(StudentScore("zs",50),StudentScore("ls",50),StudentScore("ml",50))
val rdd1:RDD[StudentScore] = sparkSession.sparkContext.makeRDD(seq1)
val dataFrame1:DataFrame = sparkSession.createDataFrame(rdd1,classOf[StudentScore])


case class Student(@BeanProperty var name:String,@BeanProperty var age:Int,@BeanProperty var sex:String)
case class StudentScore(@BeanProperty var name:String,@BeanProperty var score:Int)

join

/**
   * select name,age,score from student inner join studentscore on student.name = studentscore.name
   * join操作是内连接,但是DataFrame的join函数也支持左连接和右连接
   *    三个参数:
   *      1、关联的另外一个DataFrame
   *      2、两个DataFrame的关联字段 Seq类型 关联字段可能有多个
   *      3、连接类型  left  right inner(默认) full
   */
def joinOpt(dataFrame: DataFrame, dataFrame1: DataFrame) = {
  println("-------------------------join操作开始----------------------")
  val frame = dataFrame.join(dataFrame1, Array("name"), "left").select("name", "age", "score")
  frame.show()
  println("-------------------------join操作结束----------------------")
}

groupBy

/**
 * groupBy算子  分组函数后可以传递一些聚合函数算子进行聚合计算
 *   后可接max(col)、min(col)、count()、sum(col)、avg(col)算子进行分组后的聚合运算
 *   而且只能跟一个聚合算子 如果要跟多个聚合算子,使用以下的算子
 *   agg(Map集合)
 *     Map("列名"->"sum/min/max/avg/count","列名"->"sum/min/max/avg/count")
 *
 *     groupBy函数执行完成之后,得到DataFrame结果集中只存在age字段了
 */
def groupByOpt(dataFrame: DataFrame, dataFrame1: DataFrame) = {
  println("-------------------------groupBy1操作开始----------------------")
  val frame = dataFrame.groupBy("sex").agg(Map("*" -> "count", "age" -> "max")).select("*")
  frame.show()
  println("-------------------------groupBy1操作结束----------------------")
  println("-------------------------groupBy2操作开始----------------------")
  val dataFrame4 = dataFrame.groupBy("sex").count()
  dataFrame4.show()
  println("-------------------------groupBy2操作结束----------------------")
}

sort

def sort(dataFrame: DataFrame, dataFrame1: DataFrame) = {
  println("-------------------------sort操作开始----------------------")
  val frame = dataFrame.sort("age").select("*")
  frame.show()
  println("-------------------------sort操作结束----------------------")
}

标签:转换,val,DataFrame,----------------------,dataFrame,算子,println,-------------------
From: https://www.cnblogs.com/jsqup/p/16637892.html

相关文章

  • DataFrame操作数据的两种方式(SQL和DSL)
    SQL方式需要将DataFrame注册成为一张临时表,并给临时表起名字,通过SQL语句查询分析DataFrame中数据局部临时表、全局临时表[注意]:--1如果我们注册的是全局表,查询全局表......
  • Python源程序(.py)转换为可执行文件(.exe)
    Python源程序(.py)转换为可执行文件(.exe) 将Python源程序(.py)转换为可执行文件(.exe)由于Python程序的执行依赖于其环境,不能在操作系统下直接运行,因此在某些情况下需要将将P......
  • Mysql踩过的坑 索引失效 隐式类型转换
    ##博主所在项目,2期项目是mysql5.6版本,其使用的字符集是utf8在3期项目进行开发的时候,有一部分现成的表直接拷贝过来3期项目去使用3期项目mysql版本是8.0.20 默认约......
  • C#画刷转换
    HEX16色转Bursh:Brushbrush=newSolidColorBrush((Color)ColorConverter.ConvertFromString("#FFFFFF"));1RGB三原色转Bursh:Brushbrush=newSolidColorBrush(Color.......
  • 坐标转换:4326转3857
    functionWGS84ToMercator(lonlat){constcoord={lat:0,lng:0};constearthRad=6378137.0;//地球半径coord.lat=lonlat.ln......
  • pysimplegui学习-图片base64转换
        ......
  • python字符串转换为字典
    通过eval转换:eval方法虽然没有转换问题,但存在安全性问题,因为eval不仅能解析数据类型还能解析一些恶意输入命令,可能造成不好的影响user='{"name":"john","gender":......
  • PHP通过iconv将字符串从GBK转换为UTF8字符集
    PHP通过iconv将字符串从GBK转换为UTF8字符集_php技巧_脚本之家 https://www.jb51.net/article/27743.htm1.iconv()介绍iconv函数可以将一种已知的字符集文件转换成另一......
  • java 实现字符串转换为树
    importjava.util.*;classNode{publicstaticvoidmain(String[]args){ArrayList<String>listOfPaths=newArrayList<String>();l......
  • python常用的进制、字符串、字节之间的转换
    整数之间的进制转换:10进制转16进制:hex(16) ==> 0x1016进制转10进制:int('0x10',16) ==> 16类似的还有oct(),bin()  字符串转整数:10进制字符串:int('10......