三、Spark DataSet基本操作

3.1、DataSet简介

  • DataSet是分布式的数据集合,DataSet提供了强类型支持,也是在RDD的每行数据加了类型约束。
  • DateSet整合了RDD和DataFrame的优点,支持结构化和非结构化数据。
  • DataFrame表示为DataSet[Row],即DataSet的子集。
  • DataSet是面向对象的编程接口,可以通过JVM的对象进行构建DataSet。

3.1.1、DataFrame的缺点

  1. 编译时不能类型转化安全检查,运行时才能确定是否有问题
  2. 对于对象支持不友好,rdd内部数据直接以java对象存储,dataframe内存存储的是row对象而不能是自定义对象

3.1.2、DateSet的优点

  1. DateSet整合了RDD和DataFrame的优点,支持结构化和非结构化数据
  2. 和RDD一样,支持自定义对象存储
  3. 和DataFrame一样,支持结构化数据的sql查询
  4. 采用堆外内存存储,gc友好
  5. 类型转化安全,代码友好

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基础操作相关推荐

  1. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. Kotlin 学习笔记(八)—— Kotlin类与对象之接口

    Kotlin 学习笔记(八)-- Kotlin类与对象之接口 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- 基础 ...

  3. Windows进程与线程学习笔记(八)—— 线程切换与TSS/FS

    Windows进程与线程学习笔记(八)-- 线程切换与TSS/FS 要点回顾 线程切换与TSS 内核堆栈 调用API进0环 实验:分析SwapContext 线程切换与FS 段描述符结构 分析Swap ...

  4. Windows保护模式学习笔记(八)—— 页目录表基址/页表基址

    Windows保护模式学习笔记(八)-- 页目录表基址/页表基址 要点回顾 一.页目录表基址 实验:拆分线性地址C0300000,并查看其对应的物理页 第一步:打开一个进程,获得它的Cr3 第二步:查 ...

  5. OpenCV学习笔记(八):形态学morpholgy(2):开/闭运算,形态学梯度、顶帽/黑帽morphologyEx()

    OpenCV学习笔记(八):形态学morpholgy(2):开.闭运算,形态学梯度.顶帽.黑帽:morphologyEx() 数学形态学(Mathematical morphology) 是一门建立在 ...

  6. QT学习笔记(八):顺序容器和关联容器

    QT学习笔记(八):顺序容器和关联容器 一.前言 二.容器介绍 2.1 顺序容器 2.2 关联容器 二.顺序容器示例 三.关联容器 一.前言 在Qt库中为我们提供了一系列的基于模板的容器类(conta ...

  7. ROS学习笔记(八): ROS通信架构

    ROS学习笔记(八): ROS通信架构 文章目录 01 Node & Master 1.1 Node 1.2 Master 1.3 启动master和node 1.4 rosrun和rosno ...

  8. MATLAB学习笔记(八)

    MATLAB学习笔记(八) 一.二维曲线 1.1 plot函数 1.2 fplot函数 二.绘制图形的辅助操作 2.1 图形标注 2.2 坐标控制 2.3 图形保持 2.4 图形窗口分割 三.其他形式 ...

  9. LabView学习笔记(八):属性节点

    Labview学习笔记: LabView学习笔记(一):基础介绍 LabView学习笔记(二):滤波器实验 LabView学习笔记(三):基本控件 LabView学习笔记(四):动态数据类型 LabV ...

  10. Unity-URP学习笔记(八)使用RendererFeature制作屏幕后期-高斯模糊

    Unity-URP学习笔记(八)使用RendererFeature制作屏幕后期-高斯模糊 URP使用RendererFeature制作高斯模糊 结果展示 Shader展示 GaussianBlurRe ...

最新文章

  1. 服务器无法显示大内存的处理办法
  2. Eclipse无法打开“Failed to load the JNI shared library”
  3. SQL的OPENROWSET开启和使用方法
  4. css3 上线圆角效果
  5. PWM实现语音播放原理
  6. 公交换乘系统c语言,公交换乘的简单实现(源码)
  7. python常用算法包_Python中常用的包--sklearn
  8. 多研究些架构,少谈些框架(1) -- 论微服务架构的核心概念(转)
  9. 堰流实验报告思考题_水力学思考题 -
  10. 测试过程中如何分析抓包工具抓的HTTP或TCP包
  11. 万国觉醒迁服务器显示该王国还未开放,万国觉醒的定点迁城怎么用?怎么获得定点迁城?...
  12. springboot拦截器Interceptor
  13. OpenCV第六篇:阈值函数
  14. stylecloud ,wordcloud 库学习及使用例子
  15. setInterval()的三种写法
  16. Linux 存储 Stack详解
  17. Memcache教程
  18. 第十七届中国计量大学程序设计竞赛 D Dessert Time
  19. python表示整除的符号_c语言中整除符号怎么表示?_后端开发
  20. 自动化控制行业常见面试问题分析

热门文章

  1. MATLAB问题解决方案- Matlab出现报错:​‘***‘不是内部或外部命令,也不是可运行的程序或批处理文件
  2. 机器学习算法精讲20篇(一)-k-means聚类算法应用案例(附示例代码)
  3. R语言实战应用精讲50篇(十三)-如何使用JAVA调用R语言,两种语言的完美结合
  4. 向人类进化史看齐,编程语言的“别样”编年史
  5. 如何迅速成长成为一名数据分析师(都是干货)?
  6. EM算法(Expectation Maximization Algorithm)详解
  7. JAVA WEB知识总结之一--入门
  8. MATLAB中rand,randi,randn函数,及rand('state',0)和rand('seed',0)产生随机种子详解
  9. 阿里巴巴机器学习系列课程
  10. 最小二乘拟合,L1、L2正则化约束--转