Spark框架在数据结构上,引入了重要的RDD、DataFrame、DataSet概念,基于RDD弹性分布式数据集,Spark可以更加灵活的转换和计算,是提升整体运行效率的重要支持。今天的大数据培训分享,我们来讲讲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就容易多了。成都加米谷大数据,专业
大数据培训机构,大数据开发、数据分析与挖掘,零基础班本月正在招生中,课程大纲及学习视频可联系客服获取!