SparkSQL Dataset的创建

Spark SQL架构

  • Spark SQL是Spark的核心组件之一(2014.4 Spark1.0)
  • 能够直接访问现存的Hive数据
  • 提供JDBC/ODBC接口供第三方工具借助Spark进行数据处理
  • 提供了更高层级的接口方便地处理数据
  • 支持多种操作方式:SQL、API编程
  • 支持多种外部数据源:Parquet、JSON、RDBMS等
  • Catalyst优化器是Spark SQL的核心

Dataset的创建

在Spark shell中创建时,需要导入的包:

import org.apache.spark.sql._
import org.apache.spark.sql.functions._
import spark.implicits._
import org.apache.spark.sql.types._

创建方式一:

val dt=spark.createDataset(1 to 5)
dt.show

在这里插入图片描述
创建方式二

spark.createDataset(List(("a",1),("b",2),("c",3))).show

自定义列名。
在这里插入图片描述
创建方式三:
可以在Dataset中放入RDD。

spark.createDataset(sc.parallelize(List(("a",1,2),("b",2,3),("c",3,4)))).show

在这里插入图片描述
结论:

  1. createDataset()的参数可以是:Seq、Array、RDD;

  2. 上面三行代码生成的Dataset分别是:
    Dataset[Int]、Dataset[(String,Int)]、Dataset[(String,Int,Int)];

  3. Dataset=RDD+Schema,所以Dataset与RDD有大部共同的函数,如map、filter等

使用Cass Class创建Dataset

case class Point(name:String,age:Int,score:Int)
val stu=Seq(Point("zs",18,90),Point("ls",19,85))
//转换成Dataset
val stuInfo=stu.toDS
stuInfo.show

在这里插入图片描述
这种方法创建的Dataset可以对应相应的列名。
除了在创建时调用样例类,我们还可以通过map来给列命名。

val stu2=spark.createDataset(List(("sam",15,79),("john",17,80)))

stu2的数据和类型:
在这里插入图片描述
使用map函数:

 val stu3=stu2.map(x=>Point(x._1,x._2,x._3))
 stu3.show

在这里插入图片描述
使用select查看:

stu3.select("name","score").show

在这里插入图片描述
使用SQL语句来查询信息
除了上述的方法可以查询信息外,我们也可以使用SQL语法来查询数据信息:
Spark DataFrame提供了registerTempTable这样的接口,可以将数据对象存成临时表,便于后续的各种查询操作等。如select, join等。

stu3.registerTempTable("info")
spark.sql("select * from info").show

在这里插入图片描述
补充:
Scala中在class关键字前加上case关键字 这个类就成为了样例类,样例类和普通类区别:

  1. 不需要new可以直接生成对象
  2. 默认实现序列化接口
  3. 默认自动覆盖 toString()、equals()、hashCode()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值