全部版块 我的主页
论坛 数据科学与人工智能 大数据分析 spark高速集群计算平台
3410 0
2016-06-13

一、作业特别说明

上一次课是静态的方式转化,这一次是动态的转换方式。

列的个数,以及每一列的具体的信息只有在运行的时候才会知道:

生产环境时候,常用的方式:动态转化,

第一:生产环境的时候,一开始不容易确定每一条记录的不同的列的元数据信息,以及这条数据到底有多少列。

第二:生产环境业务容易发生变化,数据类型容易发生变化,这样就能够应对变化的业务。可以应对来自数据库或是其他的文件,这样就不需要改动自己的代码了。


作业:使用scala方式

数据:

1,Michael,29

2,Andy,30

3,Justin,19

~N4V29I%Y8@%HC2S$}B7GMD.png

复制代码

DataFrames

DataFrame是一个带有列名的分布式数据集合。等同于一张关系型数据库中的表或者R/Python中的data frame,不过在底层做了很多优化;我们可以使用结构化数据文件、Hive tables,外部数据库或者RDDS来构造DataFrames。

将RDD转换成DataFrames有两种方法:

利用反射来推断包含特定类型对象的RDD的schema。这种方法会简化代码并且在你已经知道schema的时候非常适用。

使用编程接口,构造一个schema并将其应用在已知的RDD上。

1)利用反射推断Schema

Spark SQL能够将含Row对象的RDD转换成DataFrame,并推断数据类型。通过将一个键值对(key/value)列表作为kwargs传给Row类来构造Rows。key定义了表的列名,类型通过看第一列数据来推断。(所以这里RDD的第一列数据不能有缺失)未来版本中将会通过看更多数据来推断数据类型,像现在对JSON文件的处理一样

复制代码
2)编程指定Schema

通过编程指定Schema需要3步:

1、从原来的RDD创建一个元祖或列表的RDD。

2、用StructType 创建一个和步骤一中创建的RDD中元祖或列表的结构相匹配的Schema。

3、通过SQLContext提供的createDataFrame方法将schema 应用到RDD上。

复制代码

3)使用Java实战RDD与DataFrame转换

动态构造有时候有些麻烦:spark开发了一个API就是DataSet,DataSet可以基于RDD,RDD里面有类型。他可以基于这种类型。

sparkSQL+DataFrame+DataSet:三者都相当重要,在2.0的时候编码会使用大量使用DataSet。DataSet上可以直接查询。Spark的核心RDD+DataFrame+DataSet:最终会形成三足鼎立。RDD实际是服务SparkSQL的。DataSet是想要用所有的子框架都用DataSet进行计算。DataSet的底层是无私计划。这就让天然的性能优势体现出来。官方建议使用hiveContext,在功能上比SQLContext的更好更高级的功能。

复制代码

4)使用Scala实战RDD与DataFrame转换

复制代码


注:本学习笔记来自DT大数据梦工厂      

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群