spark SQL基础教程

2023-11-20

1.sparkSQL入门

sparksql专门用于处理结构化的数据,而RDD还可以处理非结构化的数据。sparksql的优点之一是sparkfsql使用统一的api读取不同的数据,第二个优点是可以在语言中使用其他语言,例如python。另外sparksql还可以兼容hive,hive本身也是优秀的处理计算引擎,两个计算引擎相结合时非常有竞争力。

2.sparksql的概述

sparksql与hive的异同点

都是分布式的计算引擎,都可以运行在yarn之上。spark是基于内存计算,底层由RDD实现,hive是老式的mapreduce,基于磁盘,spark相对效率更高。spark SQL无元数据管理,可以混合代码来执行,hive只能写sql。

sparkSQL的数据类型

首先是dataFrame即二维表的一种结构(pandas),是一种本地的数据集合。

然后是spark core的RDD,没有固定的数据结构。

spark SQL使用了dataframe的数据结构,是一个分布式的数据集合,这一点和pandas的不一样。

schema RDD已被废弃了,因为RDD适用的范围比较广,不适用于sql。
dataFrame与RDD的区别在于数据结构的不同,其他方面很相似。例如RDD底层是以数组对象存储。

3.sparkSession对象的编程实例

一般赋值给spark
sc = spark.Context # RDD 操作入口
python代码
df = spark.read.csv(‘data.csv’,sep=‘,’,header=False)
df2 = df.toDF(‘id’,‘name’,‘score’) # 加上列名
df2.printSchema() # 展示表信息
df2.show()# 展示表
df2.createTempView(‘score’)

spark.sql(“”" select * from score where name=‘语文’
“”").show()

df2.where(“name=‘语文’”).show()

4.dataFrame入门操作

dataframe的表结构
在这里插入图片描述

基本操作

数据

语文,99
数学,98
英语,90

代码
rdd = sc.textFile(‘data.txt’) # 读出来是一个数组,每个元素是txt中的一行
.map(lambda x:x.split(‘,’)) # 切分
.map(lambda x:(x[0],int(x[1]))) # 类型转化,由字符串转为实数

df = spark.createDataFrame(rdd,schema=[‘name’,‘score’])
df.printSchema()
df.show(20,False) # 参数1表示展示多少条,默认为20条,参数2表示是否对列进行截断,截断时会使用…省略20条之后的数据。
df.createorReplaceTempView(‘score’)
spark.sql(“”“select * from score where scoer < 95"”").show()

5.catalyst优化器

RDD的运行受到开发者水平的影响,而sparkSQL能够自动优化。这是由于RDD有多种数据结构,而dataFrame是一种结构化数据,可以使用catalyst优化器进行优化。

在这里插入图片描述

6.spark on hive

spark缺少了一个元数据管理功能。而hive有元数据管理功能,hive的执行过程与spark类似,比spark多一个元数据管理功能。hive的元数据管理器和spark对SQL的处理构成了spark on hive。在spark中的hive配置文件中配置metastore服务即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spark SQL基础教程 的相关文章

随机推荐

  • 使用brew services管理服务

    原文 https www jianshu com p 6c3b26490861 简介 官网 https github com Homebrew homebrew services macOS使用launchctl命令加载开机自动运行的服务
  • 基于 LoadRunner 实现企业级服务器端性能测试的实践

    后端性能测试工具首先通过虚拟用户脚本生成器生成基于协议的虚拟用户脚本 然后根据性能测试场景设计的要求 通过压力控制器控制协调各个压力产生器以并发的方式执行虚拟用户脚本 并且在测试执行过程中 通过系统监控器收集各种性能指标以及系统资源占用率
  • Linux部署jar包,隐藏命令行参数

    Linux部署jar包 隐藏命令行参数 一 背景需求 二 查阅资料 三 实现隐藏库 3 1 测试test c 3 2 设置隐藏库 3 3 验证 四 应用jar启动命令 五 直接应用结果 最新项目安全检测 发现配置文件中数据库密码 redis
  • Linux提权—脏牛漏洞(CVE-2016-5195)复现

    脏牛漏洞 脏牛漏洞 又叫Dirty COW 存在Linux内核中已经有长达9年的时间 在2007年发布的Linux内核版本中就已经存在此漏洞 Linux kernel团队在2016年10月18日已经对此进行了修复 漏洞范围 影响版本 该漏洞
  • Spring Data JPA与JDBC的区别和基本用法

    JPA 与 JDBC 的区别和基本用法 原文地址 JPA 概念 JPA Java Persistence API 用于对象持久化的 API 是 Java EE 5 0 平台标准的 ORM 规范 使得应用程序以统一的方式访问持久层 与 JDB
  • Scrapy爬虫,数据存入MongoDB

    开始 首次登陆MongoDB 由于没有设置用户管理权限 会给出警告 WARNING Access control is not enabled for the database 警告 warning 和错误 error 不一样 你完全可以忽
  • ip正则表达式

    var Sip rule value callback gt if 2 5 0 5 0 4 d 0 1 d 1 2 2 5 0 5 0 4 d 0 1 d 1 2 3 test value false callback new Error
  • JavaWeb之xml学习笔记二(dom4j简单使用)

    使用dom4j来解析xml文件 首先需要下载dom4j 去官网下载最新版本 下载之后 我们先要在ide里创建一个xml用来提取数据 以下是用来解析的示例H xml文件
  • 若依ruoyi——手把手教你制作自己的管理系统【二、修改样式】

    阿里图标一 图片白嫖一 3 专栏略长 爆肝万字 细节狂魔 请准备好一键三连 运行成功后 idea后台正常先挂着 我习惯用VScode操作 当然如果有两台机子 一个挂后台一个改前端就更好了 只需修改vue config js配置文件即可 eg
  • Beats — Filebeat 基础操作

    ElasticStack Beats 定义 一 ElasticStack 的组成 二 Beats 组件 FileBeat 日志采集 二 Filebeat 工作原理 三 启动命令 四 部署和运行 1 output console 通过终端获取
  • Centos8启动卡在[OK] Started GNOME Display Manager.Dispatcher Service...rvice.emon.

    一 Centos8界面版本启动卡住问题如图 1 界面虽然界面卡住 但是服务可以访问 还可以使用xshell连接 或者其他远程软件连接使用 说明Centos8服务器已经启动了 但是界面卡住了 2 百度找了很多办法 说ctrl alt F1 F
  • 【1.前端Nginx负载均衡反向代理和双机热备配置】

    Nginx负载均衡 反向代理 双机热备 方案想法 两台xmail放置企业内网环境 为确保数据信息安全 外网用户无法直接访问 因此 给外网用户一个单独的入口做反向代理 其实一台Nginx服务器即可 但如果xmail服务比较多 唯一的出口不幸挂
  • Word调整标题格式

    将光标放在该级标题之后 右键 编号 定义新编号形式 编号格式改为想要的形式 以第1章为例 中间的数字形式是编号样式决定 需要将光标放在数字所在位置 选择相应形式 最后确定 就可以看到标题形式变为设置的那样
  • Spring Singleton Bean 三级缓存

    spring getBean的三级缓存有点绕 但理清楚了 就会发现也挺简单的 一 循环依赖 循环依赖有多种情况 以下整理的三种 1 构造方法互相依赖 例如ServiceA的构造方法中依赖了ServiceB Service的构造方法中依赖了S
  • 由于回车符引起的shell错误

    今天弟弟写shell时出现一个错误 源代码如下 zip r 1 2 执行时出现错误 我也写了相同的语句 发现是可以执行的 把两个文件对比一看 差别在于 出错shell 正确shell 在linux下的回车是 n 在win下面的回车是 r n
  • IIS上部署Django+vue-element-admin-master

    在Windows2012上通过IIS部署自己的web Django Vue element admin master 文章目录 前言 1 安装IIS和CGI 2 部署Django项目 3 部署vue element admin master
  • 二极管 MOS管 3.23学习笔记

    二级管 外加正向电压导通 外加反向电压截至 受电压极性控制的开关 缺点 1 由于二极管的导通压降 造成输出的电压与输入的高低电压有偏移 向下一级门电 路传递时 有高低电压的偏差 2 带负载能力差 MOS管 栅极 源极 漏极 衬底 当门极与衬
  • Mybatis-Plus insertBatch执行缓慢原因查询

    背景 最近在SpringCloud项目中 使用Mybatis Plus执行一个88万条左右的数据插入MySQL数据库的操作时 发现执行时长竟然长达2个小时 按理讲 MP框架执行如下批处理操作时 XXService insertBatch X
  • 【PyCharm警告】选择性忽略 PEP8 警告

    提示 Class names should use CamelCase convention Inspection info This inspection checks the PEP8naming conventions 为什么 从命名
  • spark SQL基础教程

    1 sparkSQL入门 sparksql专门用于处理结构化的数据 而RDD还可以处理非结构化的数据 sparksql的优点之一是sparkfsql使用统一的api读取不同的数据 第二个优点是可以在语言中使用其他语言 例如python 另外