学习笔记Spark(八)—— Spark SQL应用(3)—— Spark DataSet基础操作
三、Spark DataSet基本操作
3.1、DataSet简介
- DataSet是分布式的数据集合,DataSet提供了强类型支持,也是在RDD的每行数据加了类型约束。
- DateSet整合了RDD和DataFrame的优点,支持结构化和非结构化数据。
- DataFrame表示为DataSet[Row],即DataSet的子集。
- DataSet是面向对象的编程接口,可以通过JVM的对象进行构建DataSet。
3.1.1、DataFrame的缺点
- 编译时不能类型转化安全检查,运行时才能确定是否有问题
- 对于对象支持不友好,rdd内部数据直接以java对象存储,dataframe内存存储的是row对象而不能是自定义对象
3.1.2、DateSet的优点
- DateSet整合了RDD和DataFrame的优点,支持结构化和非结构化数据
- 和RDD一样,支持自定义对象存储
- 和DataFrame一样,支持结构化数据的sql查询
- 采用堆外内存存储,gc友好
- 类型转化安全,代码友好
3.2、创建DataSet
- 从集合创建DataSet
- 从rdd创建DataSet
- 从DataFrame创建DataSet
3.2.1、从集合创建DataSet
createDataset[T](data: List[T])
3.2.2、从rdd创建DataSet
createDataset[T](data: RDD[T])
3.2.3、从DataFrame创建DataSet
dataSet=dataFrame.as[强类型]
任务1:读取Hive表中的超市商品销售数据
- 创建Hive表
- 导入用户购买数据到Hive表
- 读取Hive表数据创建DataSet
数据 GoodOrder.csv:
步骤:
① 因为是csv,所以我们先上传到hdfs上
② 打开spark-shell,通过DataFrame方式保存到hive中
hive中查看数据:
③ 读取Hive表数据创建DataSet
3.3、DataSet API
应用示例:
(这是一个DataSet)
任务2:统计每件商品的销量
- 根据商品分组统计商品销量
- 将统计结果保存到Hive
hive查看:
学习笔记Spark(八)—— Spark SQL应用(3)—— Spark DataSet基础操作相关推荐
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Kotlin 学习笔记(八)—— Kotlin类与对象之接口
Kotlin 学习笔记(八)-- Kotlin类与对象之接口 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- 基础 ...
- Windows进程与线程学习笔记(八)—— 线程切换与TSS/FS
Windows进程与线程学习笔记(八)-- 线程切换与TSS/FS 要点回顾 线程切换与TSS 内核堆栈 调用API进0环 实验:分析SwapContext 线程切换与FS 段描述符结构 分析Swap ...
- Windows保护模式学习笔记(八)—— 页目录表基址/页表基址
Windows保护模式学习笔记(八)-- 页目录表基址/页表基址 要点回顾 一.页目录表基址 实验:拆分线性地址C0300000,并查看其对应的物理页 第一步:打开一个进程,获得它的Cr3 第二步:查 ...
- OpenCV学习笔记(八):形态学morpholgy(2):开/闭运算,形态学梯度、顶帽/黑帽morphologyEx()
OpenCV学习笔记(八):形态学morpholgy(2):开.闭运算,形态学梯度.顶帽.黑帽:morphologyEx() 数学形态学(Mathematical morphology) 是一门建立在 ...
- QT学习笔记(八):顺序容器和关联容器
QT学习笔记(八):顺序容器和关联容器 一.前言 二.容器介绍 2.1 顺序容器 2.2 关联容器 二.顺序容器示例 三.关联容器 一.前言 在Qt库中为我们提供了一系列的基于模板的容器类(conta ...
- ROS学习笔记(八): ROS通信架构
ROS学习笔记(八): ROS通信架构 文章目录 01 Node & Master 1.1 Node 1.2 Master 1.3 启动master和node 1.4 rosrun和rosno ...
- MATLAB学习笔记(八)
MATLAB学习笔记(八) 一.二维曲线 1.1 plot函数 1.2 fplot函数 二.绘制图形的辅助操作 2.1 图形标注 2.2 坐标控制 2.3 图形保持 2.4 图形窗口分割 三.其他形式 ...
- LabView学习笔记(八):属性节点
Labview学习笔记: LabView学习笔记(一):基础介绍 LabView学习笔记(二):滤波器实验 LabView学习笔记(三):基本控件 LabView学习笔记(四):动态数据类型 LabV ...
- Unity-URP学习笔记(八)使用RendererFeature制作屏幕后期-高斯模糊
Unity-URP学习笔记(八)使用RendererFeature制作屏幕后期-高斯模糊 URP使用RendererFeature制作高斯模糊 结果展示 Shader展示 GaussianBlurRe ...
最新文章
- 服务器无法显示大内存的处理办法
- Eclipse无法打开“Failed to load the JNI shared library”
- SQL的OPENROWSET开启和使用方法
- css3 上线圆角效果
- PWM实现语音播放原理
- 公交换乘系统c语言,公交换乘的简单实现(源码)
- python常用算法包_Python中常用的包--sklearn
- 多研究些架构,少谈些框架(1) -- 论微服务架构的核心概念(转)
- 堰流实验报告思考题_水力学思考题 -
- 测试过程中如何分析抓包工具抓的HTTP或TCP包
- 万国觉醒迁服务器显示该王国还未开放,万国觉醒的定点迁城怎么用?怎么获得定点迁城?...
- springboot拦截器Interceptor
- OpenCV第六篇:阈值函数
- stylecloud ,wordcloud 库学习及使用例子
- setInterval()的三种写法
- Linux 存储 Stack详解
- Memcache教程
- 第十七届中国计量大学程序设计竞赛 D	Dessert Time
- python表示整除的符号_c语言中整除符号怎么表示?_后端开发
- 自动化控制行业常见面试问题分析
热门文章
- MATLAB问题解决方案- Matlab出现报错:​‘***‘不是内部或外部命令,也不是可运行的程序或批处理文件
- 机器学习算法精讲20篇(一)-k-means聚类算法应用案例(附示例代码)
- R语言实战应用精讲50篇(十三)-如何使用JAVA调用R语言,两种语言的完美结合
- 向人类进化史看齐,编程语言的“别样”编年史
- 如何迅速成长成为一名数据分析师(都是干货)?
- EM算法(Expectation Maximization Algorithm)详解
- JAVA WEB知识总结之一--入门
- MATLAB中rand,randi,randn函数,及rand('state',0)和rand('seed',0)产生随机种子详解
- 阿里巴巴机器学习系列课程
- 最小二乘拟合,L1、L2正则化约束--转