A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我是楠楠 黑马粉丝团   /  2018-8-8 14:29  /  758 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

【郑州校区】spark笔记之DataSet

4.1.  什么是DataSet
DataSet是分布式的数据集合,Dataset提供了强类型支持,也是在RDD的每行数据加了类型约束。DataSet是在Spark1.6中添加的新的接口。它集中了RDD的优点(强类型和可以用强大lambda函数)以及使用了Spark SQL优化的执行引擎。DataSet可以通过JVM的对象进行构建,可以用函数式的转换(map/flatmap/filter)进行多种操作。
4.2.  DataFrameDataSet、RDD的区别
假设RDD中的两行数据长这样:
那么DataFrame中的数据长这样:
那么Dataset中的数据长这样:
或者长这样(每行数据是个Object):
DataSet包含了DataFrame的功能,Spark2.0中两者统一,DataFrame表示为DataSet[Row],即DataSet的子集。
(1)DataSet可以在编译时检查类型
(2)并且是面向对象的编程接口
相比DataFrame,Dataset提供了编译时类型检查,对于分布式程序来讲,提交一次作业太费劲了(要编译、打包、上传运行),到提交到集群运行时才发现错误,这会浪费大量的时间,这也是引入Dataset的一个重要原因。
4.3.  DataFrame与DataSet互相转换
DataFrame和DataSet可以相互转化。
(1)DataFrame转为 DataSet
df.as[ElementType] 这样可以把DataFrame转化为DataSet。
(2)DataSet转为DataFrame
ds.toDF() 这样可以把DataSet转化为DataFrame。
4.4.  创建DataSet
(1)通过spark.createDataset创建
(2)通toDS方法生成DataSet
(3)通过DataFrame转化生成
使用as[类型]转换为DataSet
更多DataSet操作API地址:
http://spark.apache.org/docs/2.0.2/api/scala/index.html#org.apache.spark.sql.Dataset
传智播客·黑马程序员郑州校区地址
河南省郑州市 高新区长椿路11号大学科技园(西区)东门8号楼三层
联系电话 0371-56061160/61/62
来校路线  地铁一号线梧桐街站A口出

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马