Spark---Dataset

文章目录

Dataset

公共类Dataset
扩展对象
实现scala.Serializable
数据集是特定于域的对象的强类型集合,可以使用功能或关系操作并行转换它们。每个数据集还具有一个称为a的无类型视图DataFrame,该视图是的数据集Row。

官方参考文档:点这里

package testrdd

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SparkSession

object TestDataSet {

  case class Point(label:String,x:Double,y:Double)
  case class Category(id:Int,name:String)
  
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[*]").setAppName("dateSet")
    val sc = SparkContext.getOrCreate(conf)
    val spark = SparkSession.builder().master("local[*]").appName("dataset")
      .config("spark.sql.crossJoin.enabled",true).getOrCreate()
    import spark.implicits._
    //第一种参数Seq
//    val ds = spark.createDataset(1 to 6)
//    ds.show()

    //第二种参数Array
//    val ds2 = spark.createDataset(List(1,2,3,4))
//    ds2.show()

    //第三种参数 RDD
//    val ds3 = spark.createDataset(sc.parallelize(List((1,"Tom",23),(2,"jack",33))))
//    ds3.show()

    //--------------------------------------------------------------------
    val pointsRDD = sc.parallelize(List(("Tom",3.4,4.0),("Jack",5.8,12.0)))
    val catesRDD = sc.parallelize(List((1,"Jack"),(2,"Tom")))

    val points = pointsRDD.map(lines=>Point(lines._1,lines._2,lines._3)).toDS()
    val categories = catesRDD.map(line=>Category(line._1,line._2)).toDS()

    points.join(categories).show()  //全连接---笛卡尔,不推荐
    points.join(categories,points("label")===categories("name") ).show //内连接
  }
}

Catalyst

RDD是Spark的核心,Catalyst优化器是Spark SQL的核心
将我们编写的SQL,转化成RDD执行,类似于Hive将HiveSQL转化成mapreduce过程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值