DataSet可以通过Scala的序列获取到DataSet,也可以通过RDD转换得到DataSet,也可以通过DataFrame转换得到DataSet.
说明:
在实际使用的时候, 很少用到把序列转换成 DataSet, 更多的是通过RDD来得到DataSet
代码
import org.apache.spark.sql.{Dataset, SparkSession}
/**
* 定义user实体类
*
* @param name
* @param age
*/
case class User(name: String, age: Int)
object CreateDataSet {
def main(args: Array[String]): Unit = {
//demo1() // 对象
demo2() // 基本数据类型
}
/**
* 对象
*/
def demo1(): Unit = {
val sparkSession = SparkSession
.builder()
.master("local[*]")
.appName("CreateDataSet")
.getOrCreate()
import sparkSession.implicits._
val list = List(User("张三", 15), User("李四", 20), User("王五", 25))
val ds = list.toDS()
// 在ds做sql查询
// 定义临时视图
ds.createOrReplaceTempView("user")
//查询语句
sparkSession.sql("select * from user where age > 15").show
sparkSession.stop()
sparkSession.close()
}
/**
* 基本数据类型
*/
def demo2(): Unit = {
val sparkSession: SparkSession = SparkSession
.builder()
.master("local[*]")
.appName("CreateDS")
.getOrCreate()
import sparkSession.implicits._
val list1 = List(30, 50, 70, 60, 10, 20)
// 把集合转成ds
val ds: Dataset[Int] = list1.toDS()
// df能用的ds一定可以用
ds.show
}
}
运行结果
demo1的结果
+----+---+
|name|age|
+----+---+
| 李四| 20|
| 王五| 25|
+----+---+
demo2的结果
+-----+
|value|
+-----+
| 30|
| 50|
| 70|
| 60|
| 10|
| 20|
+-----+
码云地址
https://gitee.com/crow1/ZJJ_SparkSQL/blob/01343f4/demo01/src/main/java/com/CreateDataSet.scala