【Spark分布式内存计算框架——Spark SQL】4. DataFrame(上)

news2024/11/18 12:17:59

3.1 DataFrame是什么

在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。DataFrame与RDD的主要区别在于,前者带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型。
在这里插入图片描述
使得Spark SQL得以洞察更多的结构信息,从而对藏于DataFrame背后的数据源以及作用于DataFrame之上的变换进行针对性的优化,最终达到大幅提升运行时效率。反观RDD,由于无从得知所存数据元素的具体内部结构,Spark Core只能在stage层面进行简单、通用的流水线优化。
在这里插入图片描述
上图中左侧的RDD[Person]虽然以Person为类型参数,但Spark框架本身不了解Person类的内部结构。而右侧的DataFrame却提供了详细的结构信息,使得Spark SQL可以清楚地知道该数据集中包含哪些列,每列的名称和类型各是什么。了解了这些信息之后,Spark SQL的查询优化器就可以进行针对性的优化。后者由于在编译期有详尽的类型信息,编译期就可以编译出更加有针对性、更加优化的可执行代码。

官方定义:

  • Dataset:A DataSet is a distributed collection of data. (分布式的数据集)
  • DataFrame: A DataFrame is a DataSet organized into named columns.(以列(列名,列类型,列值)的形式构成的分布式的数据集,按照列赋予不同的名称)
    在这里插入图片描述
    DataFrame有如下特性:

1)、分布式的数据集,并且以列的方式组合的,相当于具有schema的RDD;
2)、相当于关系型数据库中的表,但是底层有优化;
3)、提供了一些抽象的操作,如select、filter、aggregation、plot;
4)、它是由于R语言或者Pandas语言处理小数据集的经验应用到处理分布式大数据集上;
5)、在1.3版本之前,叫SchemaRDD;

范例演示:加载json格式数据
第一步、上传官方测试数据$SPARK_HOME/examples/src/main/resources至HDFS目录/datas
在这里插入图片描述
查看HDFS上数据文件,其中雇员信息数据【employees.json】
在这里插入图片描述
第二步、启动spark-shell命令行,采用本地模式localmode运行
在这里插入图片描述
第三步、读取雇员信息数据
在这里插入图片描述

3.2 Schema 信息

查看DataFrame中Schema是什么,执行如下命令:
在这里插入图片描述
可以看出Schema信息封装在StructType中,包含很多StructField对象,查看源码。

  • 其一、StructType 定义,是一个样例类,属性为StructField的数组
    在这里插入图片描述

  • 其二、StructField 定义,同样是一个样例类,有四个属性,其中字段名称和类型为必填
    在这里插入图片描述

自定义Schema结构,官方提供实例代码:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/348633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatGPT 配合excel /maxscript使用_初试

EXCEL 配合chatGPT方法一:利用excel的開發工具1打開excel的VB编辑器:如果頂部菜單上沒有看到開發工具,需要先按下面步驟打開開發工具:這樣按上面步驟就可以打開excel的開發工具~ 然後點擊VB~ 2让chatGPT帮忙写脚本在chatGPT上提问…

Tomcat是如何隔离Web应用的

Tomcat通过自定义的类加载器WebAppClassLoader打破了双亲委托机制,目的就是为了优化加载Web应用目录下的类。Tomcat 作为 Servlet 容器,它负责加载我们Servlet 类,此外它还负责加载 Servlet 所依赖的 JAR 包。并且Tomcat 本身也是也是一个 Ja…

petalinux 2020.2 离线编译

链接:[https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools.html] 2、在ubuntu下安装必要运行库。 1、sudo apt-get install iproute2 gawk python3 python 2、sudo apt-get install build-essential gcc gi…

第七届蓝桥杯省赛——8冰雹数(递归)

题目:任意给定一个正整数N,如果是偶数,执行: N / 2如果是奇数,执行: N * 3 1生成的新的数字再执行同样的动作,循环往复。通过观察发现,这个数字会一会儿上升到很高,一会…

海外问卷调查怎么做?手把手教会你如何薅老外的羊毛

问卷调查相信大家都不陌生。许多组织在推出新项目或新产品之前,会对全社会进行问卷调查,调查消费者或受众对产品的期望和价格的接受范围。东哥今天给大家介绍的就是海外问卷调查项目,外国人的羊毛,带你们薅定了!参与海…

基于ArgoCD实现k8s环境下的持续部署

什么是 argo CD Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes. Argo CD是一个基于Kubernetes的声明式的GitOps工具。 这里我们引入了一个新的概念, 什么是GitOps GitOps是以Git为基础,使用CI/CD来更新运行在云原生环境…

电脑资料如何转移到新电脑?教你3种数据迁移技巧

当下,电脑越来越普及,更换频率也越来越高。当我们购买新电脑,需要将旧电脑上的文件资料迁移到新电脑上,方便使用,电脑资料如何转移到新电脑?其实我们完全可以自己解决哦,下面一起来看下电脑资料…

VMware 修复了三个身份认证绕过漏洞

Bleeping Computer 网站披露,VMware 近期发布了安全更新,以解决 Workspace ONE Assist 解决方案中的三个严重漏洞,分别追踪为 CVE-2022-31685(认证绕过)、CVE-2022-31686 (认证方法失败)和 CVE-…

python应用之小麦生育期气象因子计算——基于pandas库

背景 本次介绍一下python的pandas包操作Excel(或者CSV等),应用情景是计算不同站点小麦多年生育期内的气象因子的特征(积温、降雨、辐射等) 主要涉及以下知识点: 儒略日转换数据框值获取与字符串加法基于que…

.md文件转.pdf文件

一、安装VS code vscode是一个轻量级的、可扩展性十分强的开发编辑器。过程略,比较简单。 二、安装插件Markdown PDF 直接 install 就可以了。 我这里出现了安装失败的情景,这时候可以通过它给的提示,安转markdown-pdf 的 .vsix 文件&#…

数据分析与SAS学习笔记2

SAS在企业使用的情况: SAS是一个很昂贵的商业软件。在企业中使用SAS比较多,在企业界中是比较流行,在学术界使用R比较多。 SAS简介:统计分析系统 处理生物分析数据。 SAS成为统计领域的国际标准软件,服务全球50000多家…

顶象业务安全大讲堂全新升级,挖洞大神喊你来get 挖洞秘籍啦!

CSDN直播间: 红队外网打点与情报收集策略——「业务安全大讲堂第二季第1期」https://live.csdn.net/room/dingxiangtech/rBN4xrOp 顶象业务安全大讲堂第二季将于2月23日重磅回归,本季业务安全大讲堂继续以业务安全为主题,为大家带来业务安全…

网络渗透之信息搜集

网络渗透之信息搜集一、信息搜集1.1 概念1.2 分类1.3 收集那些信息二、域名信息收集2.1 域名介绍2.2 域名分类2.3 域名信息查询- whois2.3.1 whois2.3.2 whois查询2.3.3 whois查询方法2.4 域名信息收集-备案信息三、子域名信息收集四、IP地址信息收集4.1 IP反查域名4.2 域名查询…

UVa 1343 The Rotation Game 旋转游戏 IDA* BFS 路径还原

题目链接:The Rotation Game 题目描述: 给定二十四个整数,这二十四个整数由八个一,八个二,八个三组成,从左到右,从上到下依次描述下图方格中的数字: 例如上图左边对应的输入就是[1,…

Java中List排序的3种方法!

引用:https://blog.csdn.net/sinat_32849897/article/details/122098256 在某些特殊的场景下,我们需要在 Java 程序中对 List 集合进行排序操作。比如从第三方接口中获取所有用户的列表,但列表默认是以用户编号从小到大进行排序的&#xff0c…

acwing 2 普通背包 2维做法的坑

背包问题应该都挺熟了,但还是放一下题目 无论是一维还是二维的解法,思路都比较一致,就是用一个二维的dpdpdp矩阵,dp[i][j]dp[i][j]dp[i][j] 的定义为前 iii 个元素的最优组合在容量为 jjj 的背包的最大价值。 这个定义非常的巧妙…

前缀和-蓝桥杯

一、前缀和的概念数组a[0]~ a[n-1],前缀和sum[i]等于a[0] ~ a[i]的和:sum[0] a[0]sum[1] a[0] a[1]sum[2] a[0] a[1] a[2] ......在O(n)时间内求所有前缀和: sum[i] sum[i-l] a[i]a[0]一般不用。二、前缀和与区间问题预计算出前缀和,能快速计算出区…

C语言结构体(初阶)声明、初始化、成员访问、传参

目录结构体类型的声明结构体变量的定义和初始化结构体成员访问结构体传参1.结构体类型的声明//1. struct Book {char name[20];int price; //成员列表 }b3,b4,b5;//全局变量 int main() {struct Book b1;//b1,b2局部变量struct Book b2;return 0; }//2. struct Book {char n…

重磅!ChatGPT席卷全球,Salesforce将推出EinsteinGPT!

2月9日,Salesforce首席执行官Marc Benioff在Twitter上发布了这样一则推文,表示将于3月7日的TrailblazerDX 23上发布Salesforce EinsteinGPT,随后Salesforce的官方Twitter也进行了转发。 虽然还没有正式的新闻稿,但不少业内人士猜测…

C++【模板初阶】

✨个人主页: Yohifo 🎉所属专栏: C修行之路 🎊每篇一句: 图片来源 No one saves us but ourselves, no one can and no one may. We ourselves must walk the path. 除了我们自己,没有人能拯救我们&#xf…