之前我们已经对Spark当中重要的数据抽象概念RDD作为详细的介绍,但是在Spark框架下,RDD之外,还有基于RDD的DataFrame数据抽象,在底层运算当中,DataFrame也需要深入理解。今天的大数据学习,我们就来对Spark 当中的DataFrame,做个全面的解析。
一、DataFrame特点
DataFrames和Datasets是spark中结构化数据的主要抽象形式。其中,DataFrames将结构化数据以表格形式表示,DataFrames类似于RDBMS中的表格。
DataFrames由一组松散类型的行对象组成,行包含一组有序的值,他们通过schema被描述为列,每个DataFrame都有一个对应的schema,schmea定义了列的名称和类型。列的类型可以是基础类型(integers,strings,floats)或者组合类型(Arrays,lists)。
二、DataFrame创建
创建一个DataFrame对象,通常来说有三种方法,使用toDF方法,使用createDataFrame方法和通过读文件的直接创建DataFrame。
1、使用toDF方法创建DataFrame对象
使用toDF方法,我们可以将本地序列(Seq),列表或者RDD转为DataFrame。只要这些数据的内容能指定数据类型即可。
2、使用createDataFrame方法创建DataFrame对象
这一种方法比较繁琐,通过row+schema创建DataFrame。由于比较繁琐,所以实际工作中用到的频率比较少,大家了解一下就好。
3、通过文件直接创建DataFrame对象
常见的通过文件创建DataFrame,包括通过JSON、CSV文件、MySQl和Hive表等。
创建Spark的DataFrame的几种方式,在实际的工作中,最为常用的就是从Hive中读取数据,其次就可能是把RDD通过toDF的方法转换为DataFrame。
三、DataFrame操作
DataFrame与RDD相同之处,都是不可变分布式弹性数据集。不同之处在于,DataFrame的数据集都是按指定列存储,即结构化数据,类似于传统数据库中的表。
DataFrame的设计是为了让大数据处理起来更容易。DataFrame允许开发者把结构化数据集导入DataFrame,并做了higher-level的抽象;DataFrame提供特定领域的语言(DSL)API来操作你的数据集。
关于大数据学习,Spark DataFrame全解析,以上就为大家做了大致的讲解了。在Spark当中,DataFrame是非常重要的数据抽象,在实际的编程任务当中,大部分操作都涉及到RDD和DataFrame的转换,掌握好了对编程开发至关重要。成都加米谷大数据,专业
大数据培训机构,大数据开发,数据分析与挖掘,本月正在招生中,课程大纲及试学视频,可联系客服领取!