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").showsparkSession.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)// 把集合转成dsval 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
