主页 > 新闻资讯 > 大数据培训:Spark 如何创建RDD?DataFrame?DataSet?

大数据培训:Spark 如何创建RDD?DataFrame?DataSet?

作者:张老师 浏览次数: 2021-03-26 18:00
Spark框架在数据结构上,引入了重要的RDD、DataFrame、DataSet概念,基于RDD弹性分布式数据集,Spark可以更加灵活的转换和计算,是提升整体运行效率的重要支持。今天的大数据培训分享,我们来讲讲Spark 如何创建RDD?DataFrame?DataSet?

大数据培训:Spark 如何创建RDD?DataFrame?DataSet?

1、什么是RDD?什么是DataFrame?什么是DataSet?

RDD全称Resilient Distributed Dataset,弹性分布式数据集,它是记录的只读分区集合,是Spark的基本数据结构,见名释义:

弹性,表现在两个方面,一是当计算过程中内存不足时可刷写到磁盘等外存上,可与外存做灵活的数据交换;二是RDD使用了一种“血统”的容错机制,在结构更新和丢失后可随时根据血统进行数据模型的重建;

分布式,可分布在多台机器上进行并行计算;

数据集,一组只读的、可分区的分布式数据集合,集合内包含了多个分区,分区依照特定规则将具有相同属性的数据记录放在一起,每个分区相当于一个数据集片段。


理解了RDD,DataFrame理解起来就比较容易了,DataFrame的思想来源于Python的pandas库,RDD是一个数据集,DataFrame在RDD的基础上加了Schema(描述数据的信息,可以认为是元数据,DataFrame曾经就有个名字叫SchemaRDD)。

DataSet是DataFrame API的扩展。相较于RDD来说,DataSet提供了强类型支持,区别也是给RDD的每行数据加了类型约束。

2、如何创建一个RDD?DataFrame?DataSet?

1)创建RDD

第一种在集合创建RDD,RDD的数据源是程序中的集合,通过parallelize或者makeRDD将集合转化为 RDD。

val num = Array(1,2,3,4,5)
val rdd = sc.parallelize(num)
//或者
val rdd = sc.makeRDD(num)

第二种使用本地文件、HDFS创建RDD,RDD的数据源是本地文件系统或HDFS的数据,使用 textFile 方法创建RDD。

val rdd = sc.textFile("hdfs://hans/data_warehouse/test/data")

2)创建DataFrame

DataFrame可以通过已存在的RDD进行转换生成或者直接读取结构化的文件(如json)生成DataFrame。

val df = spark.read.json("/data/tmp/SparkSQL/people.json")

3)创建DataSet

可以使用case class创建DataSet,也可以将DataFrame转换成DataSet。
case class Person(name: String, age: Long)
// 通过case class创建DataSet

val caseClassDS = Seq(Person("Andy", 32)).toDS()
// 将DataFrame转换成DataSet
val path = "examples/src/main/resources/people.json"
val peopleDS = spark.read.json(path).as[Person]

3、如何获取RDD?RDD的创建有哪些方式?

1)使用程序中的集合创建rdd;

2)使用本地文件系统创建rdd;

3)使用hdfs创建rdd;

4)基于数据库db创建rdd;

5)基于Nosql创建rdd,如hbase;

6)基于s3创建rdd;

7)基于数据流,如socket创建rdd。

关于大数据培训,Spark 如何创建RDD,DataFrame,DataSet,以上就为大家做了大致的介绍了。Spark当中的RDD,DataFrame,DataSet,其实归根结底都是RDD,理解了RDD,再来理解DataFrame,DataSet就容易多了。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,零基础班本月正在招生中,课程大纲及学习视频可联系客服获取!
热点排行
推荐文章
立即申请>>