IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 大数据--spark生态4--sparkSQL -> 正文阅读

[大数据]大数据--spark生态4--sparkSQL

目录

一:sparkSQL介绍

二:DataFrame

三:dataSet

四:rdd,dataframe,dataset之间的转换

五:rdd,dataframe,dataset异同点


一:sparkSQL介绍

sparkSQL不但兼容hive,还可以从rdd,parquet文件,json文件中获取数据。

二:DataFrame

  • dataframe是一种以rdd为基础的分布式数据集,类似于传统数据库中的二维表格。dataframe与rdd的主要区别在于,dataframe带有schema元信息,即dataframe所表示的二维表数据集的每一列都带有名称和类型。
  • dataframe也支持嵌套数据类型(struct, array, map)。
  • dataframe提供一个特定领域语言(domain-specific language, dsl)去管理结构化的数据。
val df = spark.read.json("data/user.json")

df.printSchema

df.filter($"age" > 30).show

三:dataSet

????????dataset是分布式数据集合,是dataframe的一个扩展。dataset是强类型的,比如可以有dataset[car], dataset[person]。dataframe是dataset的特例,datasetframe = dataset[row].

1)使用样例类序列创建dataset
case class person(name:string, age:long)

defined class person

val caseclassds = seq(person("zhangsan",2)).toDS()

caseclassDS.show

四:rdd,dataframe,dataset之间的转换

1) dataframe转换为dataset

? ? ? ? val ds = df.as[user]

2) dataset转换为 dataframe

? ? ? ? val df = ds.toDF

3) dataset转换为rdd

? ? ? ? val rdd = ds.rdd

4) rdd转换为dataset

? ? ? ? sparksq能够自动将包含有case类的rdd转换为dataset.

5) rdd转换为dataframe

? ? ? ? rdd.toDF

6) dataframe转换为rdd

? ? ? ? val rdd = df.rdd

五:rdd,dataframe,dataset异同点

5.1 相同点

  • 都是spark平台下的分布式弹性数据集。
  • 都有惰性机制,在进行创建,转换,如map方法的时候,不会立即执行,只有在遇到action的时候,才会执行。
  • 三者都有许多共同的函数,如filter,排序等。
  • 三者都会根据spark的内存情况自动缓存运算,这样即使数据量很大,也不用担心内存会溢出。
  • 三者都有partition的概念
  • dataset和dataframe均可以使用模式匹配获取各个字段的值和类型。

5.2 区别

1) rdd

  • rdd一般和spark millib同时使用
  • rdd不支持sparksql

2) dataframe

  • dataframe每一行的类型固定为row,每一列的值没法直接访问,只有通过解析才能获取各个字段
  • dataframe与dataset均支持sparkSQL的操作

3) dataset

  • dataset和dataframe有完全相同的成员函数区别只是每一行的数据类型不同
  • DataFrame也可以叫Dataset[Row],每一行的类型是Row,不解析,每一行究竟有哪 些字段,各个字段又是什么类型都无从得知,只能用上面提到的 getAS 方法或者共 性中的第七条提到的模式匹配拿出特定字段。而 Dataset 中,每一行是什么类型是不一定的,在自定义了 case class 之后可以很自由的获得每一行的信息

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:36:15  更:2022-03-10 22:38:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:37:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码