val spark = SparkSession.builder().master("local[2]").appName("catalogApp").getOrCreate()
spark.catalog.listTables("doudou_test")
Dataset
我们先来说一下Dataset的历史,在Spark1.0版本的时候,SparkSQL出现了,但那个时候没有DataFrame这个名称而是使用SchemaRDD这个名称,直到Spark1.3版本的时候改名叫做DataFrame了,然后到了Spark1.6版本的时候,Dataset出来了。其主要是为了解决compile-time type safety这个问题,就是强行给DataFrame加多一个泛型。
调用df的as方法,后面跟一个泛型定义好一个case class
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder().master("local[2]").appName("catalogApp").getOrCreate()
import spark.implicits._
case class Schema1(id:Int,name:String,age:Int)
val df = spark.read.format("csv").option("header","true").option("inferSchema","true").load("...")
val ds = df.as[Schema1]
}
我们再用代码来解释一下为什么要开发出Dataset这个东西出来
如果我们写SQL的话是这么写的:
val df = spark.sql("select id,name,age from userinfo")
1
在这个过程当中,我们有可能把SQL的语法给写错了,也有可能把字段名称给写错了,那么我们可以使用DataFrameAPI来编写:
val df = spark.table("userinfo")
val df1 = df.select("name","id","age")