一,RDD,DataFrame和DataSet

DataFrame参照了Pandas的思想,在RDD基础上增加了schma,能够获取列名信息。

DataSet在DataFrame基础上进一步增加了数据类型信息,可以在编译时发现类型错误。

DataFrame可以看成DataSet[Row],两者的API接口完全相同。

DataFrame和DataSet都支持SQL交互式查询,可以和 Hive无缝衔接。

DataSet只有在Scala语言和Java语言的Spark接口中才支持,在Python和R语言接口只支持DataFrame,不支持DataSet。

二,创建DataFrame

1,通过toDF方法创建

可以将Seq,List或者 RDD转换成DataFrame。

2,通过CreateDataFrame方法动态创建DataFrame

可以通过createDataFrame的方法指定rdd和schema创建DataFrame。

这种方法比较繁琐,但是可以在预先不知道schema和数据类型的情况下在代码中动态创建DataFrame。

3,通过读取文件创建

可以读取json文件,csv文件,hive数据表或者mysql数据表得到DataFrame。

三,创建DataSet

DataSet主要通过toDS方法从Seq,List或者RDD数据类型转换得到,或者从DataFrame通过as方法转换得到。

1,通过toDS方法创建

可以将Seq,List或者 RDD转换成DataFrame。

2,通过DataFrame的as转换方法得到DataSet

四,RDD,DataFrame和DataSet的相互转换

Spark的RDD,DataFrame和DataSet三种数据结构之间可以相互转换。

五,DataFrame/DataSet保存成文件

可以保存成csv文件,json文件,parquet文件或者保存成hive数据表。

六,DataFrame的API交互

DataFrame和DataSet具有完全相同的API,此处演示DataFrame常用的一些API使用。

1,Action操作

DataFrame的Action操作包括show,count,collect,collectAsList,describe,take,takeAsList,head,first等。

2,类RDD操作

DataFrame支持RDD常用的map,flatMap,filter,reduce,distinct,cache,sample,mapPartitions,foreach,intersect,except等操作。

可以把DataFrame当做数据类型为Row的RDD来进行操作。

3,类Excel操作

可以对DataFrame进行增加列,删除列,重命名列,排序等操作,去除重复行,去除空行,就跟操作Excel表格一样。

4,类SQL表操作

类SQL表操作包括表查询(select,selectExpr,where,filter),表连接(join,union,unionAll),表分组聚合(groupby,agg,pivot)等操作。

七,DataFrame的SQL交互

将DataFrame/DataSet注册为临时表视图或者全局表视图后,可以使用sql语句对DataFrame进行交互。

以下为示范代码。

八,用户自定义函数

SparkSQL的用户自定义函数包括二种类型,UDF和UDAF,即普通用户自定义函数和用户自定义聚合函数。

其中UDAF由分为弱类型UDAF和强类型UDAF,前者可以在DataFrame,DataSet,以及SQL语句中使用,后者仅可以在DataSet中使用。

1,普通UDF

2,弱类型UDAF

弱类型UDAF需要继承UserDefinedAggregateFunction。

3,强类型UDAF

强类型UDAF需要继承自Aggregator,不可注册。

2小时入门SparkSQL编程

qt5编程入门 第2版_2小时入门SparkSQL编程相关推荐

  1. Python3网络爬虫快速入门实战解析(一小时入门 Python 3 网络爬虫)

    Python3网络爬虫快速入门实战解析(一小时入门 Python 3 网络爬虫) https://blog.csdn.net/u012662731/article/details/78537432 出 ...

  2. 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---32

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

  3. 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---24

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

  4. 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---35

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下: 转载于:https://www.cnbl ...

  5. java jfm入门_image Java版*图像过滤入门示例及源码模拟绿坝过滤机制 - 下载 - 搜珍网...

    Java版*图像过滤入门示例及源码-0.1.0 (模拟绿坝过滤机制)/image/dy.jpg Java版*图像过滤入门示例及源码-0.1.0 (模拟绿坝过滤机制)/image/dymh.jpg Ja ...

  6. c语言入门自学手机版,c语言入门自学app下载-C语言入门学习 安卓版v1.0.2-PC6安卓网...

    C语言入门学习app是一款C语言零基础自学软件.C语言入门自学app提供海量精品学习资源,从小白入门到基础进阶都有,帮你轻松学习编程. 软件介绍 C语言入门学习app是一款专业的编程入门学习App,致 ...

  7. c语言入门自学手机版,C语言入门学习软件下载-C语言入门学习手机版v1.0.2 - 起点软件园...

    C语言入门学习是一款最新推出上线于安卓手机平台的专业编程学习软件,C语言入门学习app收录了海量入门视频课程,清晰易懂的详细讲解专为刚入门学习C语言的小白量身打造,不同章节都有相应的习题,根据习题成绩 ...

  8. qt 5编程入门(第2版)_《C++并发编程实战第2版》第六章:设计基于锁的并发数据结构(1/3)...

    本章主要内容 设计并发数据结构的含义 设计指南 并发数据结构的示例实现 在上一章中我们了解了底层原子操作和内存模型.本章我们先把底层的细节放一放(尽管在第7章我们将需要它们),探讨一下数据结构. 为编 ...

  9. c语言入门自学手机版,C语言入门学习app下载-C语言入门学习app最新版下载 V1.0.2-友情手机站...

    C语言入门学习app是一款0基础自学软件,这里有着丰富C语音相关课程学习,大家在这里是可以便捷搜索查找,随时都是可以找到适合感兴趣课程学习,都是一些优质课程知识提供大家,学员在这里是可以高效学习,海恩 ...

最新文章

  1. jmeter实现多并发
  2. 专业实训题目需求分析
  3. 剑指offer:滑动窗口最大值
  4. kotlin内联函数let、with、run、apply、also
  5. 科大星云诗社动态20210524
  6. cookie对比localStorage哪个适合作为网站皮肤存储
  7. pytorch:固定部分层参数,固定单个模型
  8. 人工智能迎来寒冬,自动驾驶汽车发展受阻
  9. 转:adb连接手机进行调试有两种方式
  10. 文安三中电子计算机老师叫什么,顶岗实习周记:记我的第一次.doc
  11. 视觉SLAM14讲笔记02:ch5针孔,双目相机模型
  12. 微软内部泄露的 XP的KEY和无限次激活码
  13. C#图片压缩,等比例缩小
  14. Bluetooth 蓝牙介绍(四):低功耗蓝牙BLE Mesh网络 Ⅰ—— 基础概念
  15. 06: 综合布线 、 子网划分
  16. 通俗易懂数仓建模:范式建模与维度建模
  17. POJ1287 (最小生成树) 中文版
  18. A Simple Math Problem题目翻译
  19. python:flatten()参数详解
  20. 分享一下我用Python接单的个人经历

热门文章

  1. 全年营业额怎么计算_会计税法计算公式大全
  2. android 和 iphone x,在快充方面,iPhone X和iPhone 8系列都落后于Android 旗舰
  3. 谷歌的android下拉刷新页面,Android SwipeRefreshLayout:谷歌官方SDK包中的下拉刷新
  4. mysql输出非零列_如何只提取mysql和php中具有非零值的列?
  5. java 基本类型 object_Java常用类-Object类
  6. linux和unix文件没有创建时间,Linux中没有文件创建时间的概念
  7. 微信二次修改微信号_如何二次修改微信号?简单易懂教程
  8. ubuntu下 ffmpeg视频编码和转换命令
  9. 拉勾网《32个Java面试必考点》学习笔记之二------操作系统与网络知识
  10. Python Train_机器学习--基于Python的简单线性回归