学习 Spark 2(八):DataSet 创建

栏目: 服务器 · 发布时间: 7年前

内容简介:学习 Spark 2(八):DataSet 创建

DataSet 是强类型的领域对象集,可以使用函数式(functional)或关系式(relational)操作,以并发的对 DataSet 进行转换。

DataFrame 是泛型为 Row 的 Dataset,即 Dataset[Row]

创建 Dataset

可以通过 spark.createDataFramespark.createDataset 方法,从 RDD 和 List 显式创建 Dataset

// 定义用户类
case class User(name: String, age: Long)

// 汤姆与杰瑞
val tom = new User("Tom", 21)  
val jerry = new User("Jerry", 18)  
val users = List(tom, jerry)

// 创建 DataSet
val ds = spark.createDataset(users)

也可以通过 import spark.implicits._ 隐式将 RDD 转换为 Dataset

import spark.implicits._

// 定义用户类
case class User(name: String, age: Long)

// 汤姆与杰瑞
val tom = new User("tom", 21)  
val jerry = new User("jerry", 18)  
val users = List(tom, jerry)

// 创建 RDD
val rdd = sc.parallelize(users)

// 转换为 Dataset
val ds = rdd.toDS

查询 Dataset

可以调用 spark.sql 方法从临时表、 Hive 表或者文件中查询 DataFrame

// 从 Hive 的 dw 数据库中查询 users 表的所有数据
spark.sql("select * from dw.users")  
spark.table("dw.user")  // 两者等价

// 从文本文件中查询数据
spark.sql("select * from parquet.`/data/users/*.parquet`")

读取 Dataset

调用 spark.read 通过 DataFrameReader 读取数据源为 DataFrame 或 Dataset

支持的数据源:

  • JDBC
  • 文本文件
  • CSV
  • JSON
  • ORC
  • Parquet
// 定义用户类
case class User(name: String, age: Long)

// 读取 Dataset
val ds = spark.read.json("/tmp/users.json").as[User]

或者

// 定义用户类
case class User(name: String, age: Long)

// 读取 Dataset
val ds = spark.read.format("json").load("/tmp/users.json").as[User]

写入 Dataset

调用 ds.write 通过 DataFrameWriter 将数据持久化

ds.write  
    .mode(SaveMode. Overwrite)
    .format("parquet")
    .save("/data/users")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Agile Web Development with Rails, Third Edition

Agile Web Development with Rails, Third Edition

Sam Ruby、Dave Thomas、David Heinemeier Hansson / Pragmatic Bookshelf / 2009-03-17 / USD 43.95

Rails just keeps on changing. Rails 2, released in 2008, brings hundreds of improvements, including new support for RESTful applications, new generator options, and so on. And, as importantly, we’ve a......一起来看看 《Agile Web Development with Rails, Third Edition》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具