SparkSQL概念介绍

简介: Spark SQL:将sql转换成spark任务

Spark SQL:将sql转换成spark任务


1、Spark SQL:主要处理结构化的数据

通常工业界,需要将非结构化数据转成结构化数据,然后再进一步计算和处理

2、Hive存储数据有几个层次:

table/partition/buckets/hdfs

spark sql可以和hive相结合使用

3、spark streaming中模板称为Dstream

spark sql新的概念:DataFrame,当做一个table-关系表,DataFrame(表)= Schema(表结构) + Data(表数据)

DataFrame:相比RDD多了数据的结构信息,即schema。DataFrame(表)是Spark SQL对结构化数据的抽象。可以将DataFrame看做RDD。

RDD是分布式的 Java对象的集合。DataFrame是分布式的Row对象的集合。

DataFrame优点:除了提供了比RDD更丰富的算子以外,更重要的特点是提升执行效率、减少数据读取以及执行计划的优化

5、DataFrame数据来源:数据源多样

(1)外部数据源(SQLContext):HDFS、网络接口、Mysql。。。

(2)Hive数据源(HiveContext):Hive

两者关系:HiveContext继承于SQLContext,SQLContext支持语法更多,但不支持HQL,HiveContext仅支持HQL

6、DataFrame是分布式table,并不是spark独创,也不装真正的数据,而是转换关系和描述,更像传统数据库中的二维表

7、RDD与DataFrame区别:

RDD是以行为单位(record)读数据

DataFrame包含了每个record的metadata元数据信息,DataFrame可以对其内部进行列优化

image.png


8、RDD与DataFrame相同点:懒惰机制


处理数据步骤:

(1)读入:SQLContext、HiveContext

(2)处理:DataFrame

(3)输出:SQLContext、HiveContext


9、DataSet--spark1.6之后推出的新的API,也是一个分布式数据集(在scala中,DataFrame其实是DataSet[Row],这个Row里面包含了多个列信息)

Dataset是数据的分布式集合。Dataset是在Spark 1.6中添加的一个新接口,是DataFrame之上更高一级的抽象。

提供了RDD的优点(强类型化)以及Spark SQL优化后的执行引擎的优点。

一个Dataset 可以从JVM对象构造,然后使用函数转换(map, flatMap,filter等)去操作。

Dataset API 支持Scala和Java。 Python不支持Dataset API。

10、spark sql处理核心:Catalyst工作流程(用tree结构来存储sql、DataFrame)

优化点:

(1)基于规则:经验式、启发式优化思路

对于两张表join的方法选择(broadcastHashJoin、sortMergeJoin)

(2)基于代价(join大小表,外排和内排):代价模型,调整join的顺序

11、数据处理工作流程:

(1)Parser

(2)Analyzer

(3)Optimizer

(4)Physical Planning

12、内存管理:Tungsten Off-heap内存管理

突破JVM内存管理限制,分配堆外内存,使得spark实现了自己独立内存管理,避免JVM资源回收引发的性能问题

13、优化

基于规则优化

基于代价优化(join)


目录
相关文章
|
自然语言处理 BI 数据处理
【数据对比】综合分析百度情感分析以及华为情感分析的差异,我有了如下结果
【数据对比】综合分析百度情感分析以及华为情感分析的差异,我有了如下结果
567 0
|
SQL 前端开发 JavaScript
基于java+springboot的宠物商店、宠物管理系统
该系统是基于java+springboot开发的宠物商城,用户可以登录该网站购买宠物。该系统是给师弟开发的课程作业。运行过程中的问题,可以咨询github或留言。
367 0
|
算法 程序员 编译器
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
158 0
|
PyTorch TensorFlow 算法框架/工具
Jetson环境安装(一):Ubuntu18.04安装pytorch、opencv、onnx、tensorflow、setuptools、pycuda....
本文提供了在Ubuntu 18.04操作系统的NVIDIA Jetson平台上安装深度学习和计算机视觉相关库的详细步骤,包括PyTorch、OpenCV、ONNX、TensorFlow等。
1164 1
Jetson环境安装(一):Ubuntu18.04安装pytorch、opencv、onnx、tensorflow、setuptools、pycuda....
|
消息中间件 Java 程序员
SpringBoot整合RocketMQ,尝尝几大高级特性!
作为一名程序员,您一定熟悉RocketMQ的功能,包括支持事务、顺序和延迟消息等。在程序员界有一句名言,“Talk is cheap. Show me the code” 。本文将通过实际案例来引出解决方案,并通过代码实现,让您在学习本节的过程中能够确切地掌握实际编码技能
423 0
SpringBoot整合RocketMQ,尝尝几大高级特性!
|
网络安全
mac下通过ssh脚本实现免账号密码连接运服务器
mac下通过ssh脚本实现免账号密码连接运服务器
178 3
|
分布式计算 DataWorks NoSQL
DataWorks产品使用合集之怎么离线同步MongoDB的增量数据
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
编解码 数据可视化 前端开发
ECharts 对比 Highcharts 使用教程
ECharts 对比 Highcharts 使用教程
519 1
|
数据采集 传感器 存储
ESP32+MQTT+MySQL实现发布订阅【气味数据收集】
ESP32+MQTT+MySQL实现发布订阅【气味数据收集】
ESP32+MQTT+MySQL实现发布订阅【气味数据收集】
|
SQL 存储 关系型数据库
MySQL配置文件my.cnf 优化
MySQL配置文件my.cnf 优化
395 0