SparkSql介绍

news/2024/5/19 23:10:33

概述

SparkSQL,顾名思义,就是Spark生态体系中的构建在SparkCore基础之上的一个基于SQL的计算模块。SparkSQL的前身不叫SparkSQL,而叫Shark,最开始的时候底层代码优化,sql的解析、执行引擎等等完全基于Hive,总之Shark的执行速度要比hive高出一个数量级,但是hive的发展制约了Shark,所以在15年中旬的时候,shark负责人,将shark项目结束掉,重新独立出来的一个项目,就是sparksql,不再依赖hive,做了独立的发展,逐渐的形成两条互相独立的业务:SparkSQL和Hive-On-Spark。在SparkSQL发展过程中,同时也吸收了Shark有些的特点:基于内存的列存储,动态字节码优化技术。

SparkSQL特点

Integrated

强大的整合能力,可以在spark程序中混合SQL查询操作,如图-1所示。

图-1 SparkSQL特点之integrated

Uniform Data Access

统一的数据访问接口,使得sparksql可以非常便捷的进行数据访问操作,如图-2所示。

图-2 SparkSQL特点之uniform data access

Hive Integration

SparkSQL一个非常重要的功能,就是读写hive中的数据,所以对于hive的强大支持,就是sparksql重要的能力之一,如图-3所示。

图-3 SparkSQL特点之hive integration

Standard Connectivity:

SparkSQL强大的功能的同时,为了方便一些BI组件的调用数据,也提供了支持JDBC/ODBC,使得对数据访问变得多元化,功能完整化,如下图-4所示。

图-4 SparkSQL特点之Standard Connectivity

总结

SparkSQL就是Spark生态体系中用于处理结构化数据的一个模块。结构化数据是什么?存储在关系型数据库中的数据,就是结构化数据;半结构化数据是什么?类似xml、json等的格式的数据被称之为半结构化数据;非结构化数据是什么?音频、视频、图片等为非结构化数据。

换句话说,SparkSQL处理的就是二维表数据。


http://www.mrgr.cn/p/32176024

相关文章

FreeBSD RISCV 在QEME中实践-网络配置

在前一篇文章中,我们一起进行了FreeBSD RISCV 在QEME中实践 现在,让我们配置好网络吧! 先上结论:用默认配置启动即可,网络就加载好了,只是不能ping罢了。因为不能ping,以为网络没通&#xff0…

excel如何将多列数据转换为一列?

这个数据整理借用数据透视表也可以做到: 1.先将数据源的表头补齐,“姓名” 2.点击插入选项卡,数据透视表,在弹出对话框中,数据透视位置选择 现有工作表,(实际使用时新建也没有问题)…

学习笔记480—Obsidian中如何实现思维导图功能-mindmap插件

Obsidian中如何实现思维导图功能-mindmap插件 思维导图插件 思维导图是大家耳熟能详的一类软件,以xmind为代表。那么在obsidian中如何实现思维导图效果呢,本文介绍思维导图插件Enhancing mindmap的安装与使用过程。 效果图插件下载 Github地址: https://github.com/MarkMind…

初识Fink

概述 Fink用于处理计算的,如下图所示,将交易、日志、物联网、点击流的数据输入到Flink中进行处理计算,处理完成之后输出到应用、日志、数据库中。Flink是以流的方式对数据进行处理的,所谓流就是源源不断,每时每刻都在有序的产生,例如设备仪器运行数据就属于数据流,因为设…

三角函数之和差化积公式

知识点1:三角函数奇偶性: \(\sin(-\theta)=-\sin\theta, \quad \cos(-\theta)=\cos\theta\)如上图: 单位半圆的半径为1,\(\triangle AOB\)为等腰三角形。 点\(C\)为线段\(AB\)之中点,连接\(CO\)。 根据等腰三角形的性质,\(OC\) 是 \(△AOB\) 的角平分线和垂直平分线。 \(…

每日一题 礼物的最大价值

题目描述 礼物的最大价值_牛客题霸_牛客网 解题思路 这是一个典型的动态规划问题。我们可以使用一个二维数组 dp[][] 来存储到达每个格子时可以获得的最大价值。状态转移方程为 dp[i][j] max(dp[i-1][j], dp[i][j-1]) grid[i][j],表示到达当前格子的最大价值是从…

android init进程启动流程

一,Android系统完整的启动流程 二,android 系统架构图 三,init进程的启动流程 四,init进程启动服务的顺序 五,android系统启动架构图 六,Android系统运行时架构图 bool Service::Start() {// Starting a service removes it from the disabled or reset state and// imme…

buuctf-pwn-get_started_3dsctf_2016

题目地址:https://buuoj.cn/challenges#get_started_3dsctf_2016 检查一下保护情况拖进ida分析主函数有个很明显的栈溢出漏洞 没有找到system函数,但是发现了这个函数后面有两种解题思路 0x01 调用get_flag函数 这个函数读取了flag.txt,并输出内容,那么我们就想办法溢出到这…

再议大模型微调之Zero策略

1. 引言 尽管关于使用Deepspeed的Zero策略的博客已经满天飞了,特别是有许多经典的结论都已经阐述了,今天仍然被问到说,如果我只有4块40G的A100,能否进行全量的7B的大模型微调呢? 正所谓“纸上得来终觉浅,…

《Video Mamba Suite》论文笔记(1)Mamba在时序建模中的作用

原文链接 https://arxiv.org/abs/2403.09626https://arxiv.org/abs/2403.09626 原文代码 https://github.com/OpenGVLab/video-mamba-suitehttps://github.com/OpenGVLab/video-mamba-suite 原文笔记 What 《Video Mamba Suite: State Space Model as a Versatile Altern…

群晖存储池损毁,加上错误操作删除

如何联系本人? 储存池被我误删除了,导致无法正常通过,格式化群晖第一、第二分区进行恢复。系统损毁了,先导出群晖设置,进入pe使用DiskGenius格式化你所有硬盘的第一个和第二个分区(大约是1-2个G大小的分区)切记不是删除分区, 第三个分区千万不要动,那是数据分区,然后…

普洱茶泡多少茶叶才算淡茶?

普洱茶淡茶一般放几克茶叶,品深茶官网根据多年专业研究与实践结果,制定了淡茶冲泡标准。在冲泡普洱茶淡茶时,茶叶的投放量是关键因素之一。淡茶冲泡标准旨在保持茶汤的清爽口感,同时充分展现普洱茶的独特风味。 根据《品深淡茶冲…

力扣刷题--数组--第二天

今天仍然做二分查找相关的题目。先来回顾一下二分查找的方法和使用的条件。二分查找是在数组中查找目标值的一种方法,通过边界索引确定中间索引,判断中间索引处的元素值和目标值的大小,来不断缩小查找区间。使用二分查找有如下一些限制&#…

nginx模型设计和进程讲解

一. Nginx进程模型解析 1. master主进程 和 worker工作进程 [rootlocalhost sbin]# ps -ef|grep nginx root 15411 1 0 21:08 ? 00:00:00 nginx: master process ./nginx nobody 15412 15411 0 21:08 ? 00:00:00 nginx: worker process root…

干货分享-策划人都在用的活动策划网站

职场上,学会借力,学会‘抄’,比辛辛苦苦做老黄牛,更能事倍功半,不仅自己省事省力,还能获得更多升职加薪的机会。 那么,职场新人如何快速的写出一份领导满意的方案? 今天分享的‘抄…

ue引擎游戏开发笔记(33)——武器与角色的匹配,将新武器装备到角色身上

1.需求分析: 武器能出现在世界中,完成了第一步,下一步需要角色和武器适配,即不论角色跑动,射击等,武器和角色都相匹配,将武器装备到角色身上。 2.操作实现: 1.首先先把角色原有的武…

C语言栈的含义与栈数据操作代码详解!

引言:在本篇博客中,我们将学到数据结构——栈,讲到栈的含义与关于栈的数据操作代码。栈可以在顺序表、双向链表以及单链表的基础上实现,而于本篇博客中,我们选择在顺序表的基础上实现栈。 更多有关C语言和数据结构知识…

Shell编程规范与变量

目录1.Shell脚本概述2.Shell编程规范(1)编写脚本代码(2)脚本编写结构(3)Shell脚本的运行3.重定向与管道(1)交互式硬件设备(2)重定向操作(3)管道操作“|”4.Shell脚本变量(1)自定义变量(1)定义一个新的变量(2)赋值时使用引号(3)设置变量的作用范围(4)整数…

SpringBoot3项目打包和运行

六、SpringBoot3项目打包和运行 6.1 添加打包插件 在Spring Boot项目中添加spring-boot-maven-plugin插件是为了支持将项目打包成可执行的可运行jar包。如果不添加spring-boot-maven-plugin插件配置,使用常规的java -jar命令来运行打包后的Spring Boot项目是无法找…

C++面试题(三)

1、程序有哪些section,分别的作用?程序启动的过程?怎么判断数据分配在栈上还是堆上?如上图,从低地址到高地址,一个程序由代码段、数据段、 BSS 段组成。 \1. 数据段:存放程序中已初始化的全局变量和静态变量的一块内存区域。 \2. 代码段:存放程序执行代码的一块内存区域…