通过createDataset创建Dataset数据集(Array,RDD,List)

  1. 说明
  • 定义:
底层用到了函数的柯里化,需要传递两个值。
第二个值是一个隐式参数,需要定义一个隐式变量给隐式参数传递值。
隐式变量不需要我们定义 在SparkSession中全部给我们定义好了。
隐式变量是一个编码器Encoder变量
我们只需要导入即可
import session.implicits._
  • 与dataframe的不同:
    Dataset中列名是和传入的集合、RDD的类型是有关系的,
    如果类型就是普通集合类型或者元组类型或者是普通类型 那列名随机生成。
    如果类型是Bean,那么列名就是Bean的属性名,无需指定。而dataframe需要指定。
  1. 通过集合创建
  • 定义:createDataset(Seq[T])
package SparkSQL.DataSet
import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, Dataset, SparkSession}
object CreateDatasetByCreateDataset {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setAppName("demo01").setMaster("local[*]")
val session = SparkSession.builder().config(sparkConf).getOrCreate()
// createDataset需要一个隐式变量值 Encoder[Teacher],所以需要导入隐式函数
import session.implicits._
val dataset: Dataset[(String, Int)] = session.createDataset(Array(("zs", 20), ("ls", 21)))
dataset.show()
}
}
  1. 通过rdd创建
  • 定义:createDataset(RDD[T])
import session.implicits._
val rdd: RDD[(String, Int)] = session.sparkContext.makeRDD(Array(("zs", 20), ("ls", 21)))
val dataset1 = session.createDataset(rdd)
dataset1.show()
  1. 通过list创建
  • 定义:createDataset(util.List[T])
import session.implicits._
val dataset2: Dataset[(String, Int)] = session.createDataset(List(("zs", 20), ("ls", 22)))
dataset2.show()
posted @   jsqup  阅读(493)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示