Spark3学习【基于Java】2. Spark-Sql核心概念
SparkSession
从Spark2开始,Spark-SQL引入了SparkSession这个核心类,它是处理DataSet等结构数据的入口。在2.0之前,使用的是spark-core里的SparkContext。从前面的例子里也可以看到,程序一上来就要先创建SparkSession对象:
- SparkSession spark = SparkSession.builder().appName("Simple Application").master("local").getOrCreate();
如果是在Spark-shell中,默认提供了它的一个对象叫spark。
spark-shell是给scala环境使用的一个命令行调试工具
SparkSession组合了2.0之前的几种上下文类,比如SQLContext和HiveContext,所以使用这些的地方原则上可以都用SparkSes来代替了。不过其他上下文类依然存在,就像RDD对于DataSet一样,它们依然功能完整操作细腻,比不过是Spark提供了新的API来封装、简化操作。
我们来看一下上面那条创建语句:最后的方法含义清晰,有就返回,没有就创建。master方法用来指明在集群环境下的master是谁。在Standalone 模式下传local或local[n],n是spark执行任务时的期望分片数。
RDD/Dataset/DataFrame
Resilient Distributed Datasets (RDD) 译成弹性分布式数据集,是Spark中的核心概念。前面说过这个概念现在被Dataset和DataFrame代替了,但它依然存在。由于它的一些"缺点",导致Spark提供了更高级的API,但是在它之上构建的。
它是一组对象组成的不可变的分布式集合,里面的数据会被分成多个逻辑片在不同的节点上面计算。
在遇到RDD的时候,现在我们通常会将其转化为Dataset和DataFrame,因为DataFrame更好用,它提供了和关系表一样的具名列,更重要的是计算性能也更好。
转化的方法也很简单,之前我们用到了:toDF()。
dataset和dataFrame的区别是,dataset的泛型类型是明确的,所以是类型安全的,编译的时候就能检查问题,风格也更接近面向对象。而dataframe的泛型类型是Row,里面有哪些列要主动探知。
因为它们的数据结构是同一个,所以优化方式是一致的:能够利用Catalyst 查询引擎,堆外存储机制等。
Spark程序是运行了JVM上的,所以会有垃圾回收的过程。Spark为了不对计算数据进行GC扫描,通过Unsafe类使用了非堆内存
Encoder
编码器是用来将Java对象转化为Spark的二进制格式的,我们前面的例子里也用了一些内置的编码器,非常方便但是不好看。
上面说了spark使用了堆外内存,所以会涉及大量的数据序列化。Spark提供的编码器有一个强大的地方是,不用反序列化就能访问属性。
Spark3学习【基于Java】2. Spark-Sql核心概念的更多相关文章
- JAVA入门(1.JAVA平台应用 2.核心概念:JVM,JDK,JRE 3.搭建JAVA开发环境 4.学习JAVA的原则)
主要内容: 1.JAVA平台应用 2.核心概念:JVM,JDK,JRE 3.搭建JAVA开发环境 4.学习JAVA的原则 JAVA的平台应用 JAVA的平台应用分为3个部分: 一.JAVA SE,主要 ...
- Spark Streaming核心概念与编程
Spark Streaming核心概念与编程 1. 核心概念 StreamingContext Create StreamingContext import org.apache.spark._ im ...
- Spark系列-核心概念
Spark系列-初体验(数据准备篇) Spark系列-核心概念 一. Spark核心概念 Master,也就是架构图中的Cluster Manager.Spark的Master和Workder节点分别 ...
- Spark SQL基本概念与基本用法
1. Spark SQL概述 1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了两个编程抽象分别叫做DataFrame和DataSet,它们用于作为 ...
- Ext JS 6学习文档–第2章–核心概念
核心概念 在下一章我们会构建一个示例项目,而在这之前,你需要学习一些在 Ext JS 中的核心概念,这有助于你更容易理解示例项目.这一章我们将学习以下知识点: 类系统,创建和扩展类 事件 Ext JS ...
- Flink SQL 核心概念剖析与编程案例实战
本次,我们从 0 开始逐步剖析 Flink SQL 的来龙去脉以及核心概念,并附带完整的示例程序,希望对大家有帮助! 本文大纲 一.快速体验 Flink SQL 为了快速搭建环境体验 Flink SQ ...
- SpringInAction学习笔记(一):核心概念
Spring自带了多种应用上下文 AnnotationConfigApplicationContext:从一个或多个java配置类中加载应用上下文 AnnotationConfigWebApplica ...
- Maven学习总结(4)——Maven核心概念
Maven学习总结(四)--Maven核心概念 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Maven坐标主要组成 groupId:组织标识 ...
- Maven学习(四)-- Maven的核心概念
摘自:http://www.cnblogs.com/xdp-gacl/p/4051819.html 一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1. ...
- 自适应查询执行:在运行时提升Spark SQL执行性能
前言 Catalyst是Spark SQL核心优化器,早期主要基于规则的优化器RBO,后期又引入基于代价进行优化的CBO.但是在这些版本中,Spark SQL执行计划一旦确定就不会改变.由于缺乏或者不 ...
随机推荐
- 分享一张2020年用jaegertracing画的tomcat8.5启动流程图
今天整理电脑的时候意外发现一张tomcat8.5的启动流程图,是笔者2020年借助jaegertracing绘制的,想想还比较有意思,在这里分享一下,当初闲来无事折腾了小半天,具体过程已经是记不起来了 ...
- 网络拓扑—FTP服务搭建
目录 FTP服务搭建 网络拓扑 配置网络 FTP PC 安装FTP服务 配置FTP服务 FTP用户配置-1 PC机访问FTP站点 IE浏览器访问 终端访问 FTP用户配置-2 PC机访问ftp站点 I ...
- selenium 滚动截图参考
Selenium本身并不直接支持滚动截图,但是你可以通过编程方式实现滚动截图.下面是一个Python的例子,使用Selenium和PIL库实现滚动截图: from selenium import we ...
- Excel功能学习
字符串和单元格内容拼接函数CONCATENATE a@马踏星空:=CONCATENATE(D2,E2,F2)拼接指定单元格内字符串,无分隔符 a@马踏星空:=CONCATENATE(I4," ...
- 记一次Nacos漏洞的复现 --> 身份认证绕过漏洞(QVD-2023-6271)
前记 端午前两天,遇到公司某客户的站点是Nacos,随后就是网上搜一波漏洞,搜到 QVD-2023-6271,故做以下记录 漏洞复现 漏洞描述 漏洞原理为开源服务管理平台 Nacos在默认配置下未对 ...
- call failed:, {"errMsg": "canvasToTempFilePath:fail invalid viewId"}苹果设备保存离屏 canvas 问题
call failed:, {"errMsg": "canvasToTempFilePath:fail invalid viewId"}苹果设备保存离屏 can ...
- AIRIOT智慧变电站管理解决方案
随着社会电气化进程的加速,电力需求与日俱增,变电站作为电网的关键节点,其稳定性和智能化管理水平直接关系到整个电力系统的高效运作.传统变电站管理平台难以适应现代电力系统复杂管理需求,存在如下痛点: 数据 ...
- 把nacos安装成windows服务
方式一: 用sc的方式安装和删除服务 摘自:https://blog.csdn.net/qq_33803102/article/details/109024989 sc create nacos st ...
- wpf 斗地主 单机版 没有机器人出牌算法
斗地主的游戏流程实现了,剩余的音效和机器人的出牌算法,抓地主算法就用最简单的实现. 主要实现了各种牌组的组合,牌组的大小比较,总共有16种牌组 基础牌组 单张.炸弹.炸弹型飞机带对子.炸弹型飞机什么都 ...
- C# wpf之控制屏幕显示方向旋转
using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices ...