首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spark SQL在雪球的实践

经过一段时间推广和使用,目前在交互查询和离线ETL很多场景和计算都已经支持了Spark SQL: 本文主要分享了从Hive3 SQL切换成Spark3 SQL的实践。...从执行时长来看,Spark SQL执行时长和Hive3 on Tez在一个数据量级,但Spark SQL资源消耗大概在Hive3 on Tez(限制了并行度)的1/3。...Spark SQL在执行ORC和Parquet格式的文件解析时,默认使用Spark内置的解析器(Spark内置解析器效率更高),这些内置解析器不支持递归子目录的两项参数,并且也没有其它参数支持这一效果。...Spark权限和审计 在Hive里面,我们继承了PasswdAuthenticationProvider实现了自定义的用户认证,通过集成Ranger实现了权限管控,而Spark开源版并没有完整的解决方案...小文件问题 为了提升计算速度,大数据计算引擎在计算时候都会采取并行处理,而Spark SQL在写入数据的时候是并行写入,并没有一个合并的过程。

3.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spark SQL在100TB上的自适应执行实践

    Spark SQL是Apache Spark最广泛使用的一个组件,它提供了非常友好的接口来分布式处理结构化数据,在很多应用领域都有成功的生产实践,但是在超大规模集群和数据集上,Spark SQL仍然遇到不少易用性和可扩展性的挑战...本文首先讨论Spark SQL在大规模数据集上遇到的挑战,然后介绍自适应执行的背景和基本架构,以及自适应执行如何应对Spark SQL这些问题,最后我们将比较自适应执行和现有的社区版本Spark SQL...挑战2:Spark SQL最佳执行计划 Spark SQL在执行SQL之前,会将SQL或者Dataset程序解析成逻辑计划,然后经历一系列的优化,最后确定一个可执行的物理计划。...实验结果显示,在自适应执行模式下,103条SQL中有92条都得到了明显的性能提升,其中47条SQL的性能提升超过10%,最大的性能提升达到了3.8倍,并且没有出现性能下降的情况。...在SortMergeJoin中有一个基本的设计:每个reducetask会先读取左表中的记录,如果左表的 partition为空,则右表中的数据我们无需关注(对于非anti join的情况),这样的设计在左表有一些

    2.6K60

    袋鼠云数栈基于CBO在Spark SQL优化上的探索

    原文链接:袋鼠云数栈基于 CBO 在 Spark SQL 优化上的探索 一、Spark SQL CBO 选型背景 Spark SQL 的优化器有两种优化方式:一种是基于规则的优化方式 (Rule-Based...Spark 默认没有开启直方图统计,需要额外设置参数:spark.sql.statistics.histogram.enabled = true。...三、数栈在 Spark SQL CBO 上的探索 了解完 Spark SQL CBO 的实现原理之后,我们来思考一下第一个问题:大数据平台想要实现支持 Spark SQL CBO 优化的话,需要做些什么...在数栈没有实现 CBO 支持之前,Spark SQL 的优化只能通过调整 Spark 本身的参数实现。这种调优方式很高的准入门槛,需要使用者比较熟悉 Spark 的原理。...四、未来展望 在 CBO 优化方面持续投入研究后,Spark SQL CBO 整体相比较 RBO 而言已经有了很大的性能提升。

    1.3K20

    初识 Spark SQL | 20张图详解 Spark SQL 运行原理及数据抽象

    在 Spark 中,Spark SQL 并不仅仅是狭隘的 SQL,而是作为 Spark 程序优化、执行的核心组件。...有些可以通过一次解析处理,有些需要多次迭代,迭代直到达到 FixedPoint 次数或前后两次的树结构没有变化才停止操作。 ▲ 在语法树中加入元数据信息,生成绑定的逻辑计划 3.3.4....后面会另起章节,带大家实操 Spark SQL,敬请关注! 4 Spark SQL 数据抽象 在 Spark SQL 中有两种数据抽象:DataFrame 和 DataSet。...Spark Shell 中可直接使用 SparkSession 在 Spark 早期的版本中,SparkContext 是 Spark 的主要切入点,由于 RDD 是主要的 API,与 Spark 交互之前必须先创建...上可用的 API 在 SparkSession 上同样是可以使用的。

    10.9K86

    SparkSql学习笔记一

    一、SparkSql介绍 1.简介     Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。     ...所以Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!同时Spark SQL也支持从Hive中读取数据。...它在概念上等同于关系数据库中的表,但在底层具有更丰富的优化。DataFrames可以从各种来源构建,         DataFrame多了数据的结构信息,即schema。         ...Dataset是在Spark 1.6中添加的一个新接口,是DataFrame之上更高一级的抽象。...            只对当前对话有作用     全局视图         df.createGlobalTempView("empG")             在全局(不同会话)有效

    85430

    SparkSql之编程方式

    提供两种SQL查询起始点:一个叫SQLContext,用于Spark自己提供的SQL查询;一个叫HiveContext,用于连接Hive的查询。...SparkSession是Spark最新的SQL查询起始点,实质上是SQLContext和HiveContext的组合,所以在SQLContext和HiveContext上可用的API在SparkSession...----spark sql 编程有两种方式声明式:SQL命令式:DSL声明式:SQL使用声明式,需要注册成表注册成表的四种方式createOrReplaceTempView:创建临时视图,如果视图已经存在则覆盖...,在GroupedData的API中提供了group by之后的操作,比如, max(colNames: String*)方法,获取分组中指定字段或者所有的数字类型字段的最大值,只能作用于数字型字段 min...获取两个DataFrame中共有的记录 1.intersect方法可以计算出两个DataFrame中相同的记录,获取一个DataFrame中有另一个DataFrame中没有的记录 1.使用 except

    88510

    2021年大数据Spark(二十四):SparkSQL数据抽象

    然而,对于没有MapReduce和函数式编程经验的新手来说,RDD API仍然存在着一定的门槛。...为了解决这一矛盾,Spark SQL 1.3.0在原有SchemaRDD的基础上提供了与R和Pandas风格类似的DataFrame API。...更重要的是,由于脱胎自SchemaRDD,DataFrame天然适用于分布式大数据场景。 注意: DataFrame它不是Spark SQL提出来的,而是早期在R、Pandas语言就已经有了的。...总结: Dataset是在Spark1.6中添加的新的接口,是DataFrame API的一个扩展,是Spark最新的数据抽象,结合了RDD和DataFrame的优点。...与RDD相比:保存了更多的描述信息,概念上等同于关系型数据库中的二维表; 与DataFrame相比:保存了类型信息,是强类型的,提供了编译时类型检查,调用Dataset的方法先会生成逻辑计划,然后被Spark

    1.2K10

    Spark SQL 快速入门系列(2) | SparkSession与DataFrame的简单介绍

    SparkSession   在老的版本中,SparkSQL 提供两种 SQL 查询起始点:一个叫SQLContext,用于Spark 自己提供的 SQL 查询;一个叫 HiveContext,用于连接...从2.0开始, SparkSession是 Spark 最新的 SQL 查询起始点,实质上是SQLContext和HiveContext的组合,所以在SQLContext和HiveContext上可用的...API 在SparkSession上同样是可以使用的。   ...SQL 语法风格(主要)   SQL 语法风格是指我们查询数据的时候使用 SQL 语句来查询.   这种风格的查询必须要有临时视图或者全局视图来辅助 1....注意: 临时视图只能在当前 Session 有效, 在新的 Session 中无效. 可以创建全局视图. 访问全局视图需要全路径:如global_temp.xxx 4.

    2.2K30

    大数据架构设计(四十五)

    加速层:实时计算,追加的在线数据。 服务层:流处理视图、批处理视图和查询视图。 Hadoop(HDFS)用于存储主数据集,Spark可构成加速度层,HBase作为服务层。...Kappa架构的原理 在lambda的基础上进行优化,删除了batch layer批处理层,将数据通道以消息队列进行代替。...来了数据直接塞到消息队列,以流处理为主,实时计算没有问题,当需要离线分析的时候,则将数据湖的数据再次通过消息队列重播一次。...批处理层每天凌晨将kafka浏览、下单消息同步到HDFS,再将HDFS中的日志解析成Hive表,用hive sql/spark sql计算出分区统计结果hive表,最终hive表导出到mysql服务中。...另一方面曝光、点击和花费通过外部数据的第三方api获取,写入mysql表。

    37420

    Note_Spark_Day07:Spark SQL(DataFrame是什么和数据分析(案例讲解))

    编写SQL语句 注册DataFrame为临时视图 编写SQL语句,类似Hive中SQL语句 使用函数: org.apache.spark.sql.functions._ 电影评分数据分析...1、Spark 1.0之前 Shark = Hive + Spark 将Hive框架源码,修改其中转换SQL为MapReduce,变为转换RDD操作,称为Shark 问题: 维护成本太高,没有更多精力在于框架性能提升...05-[掌握]-DataFrame是什么及案例演示 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。...原因:在SparkSQL中当Job中产生Shuffle时,默认的分区数(spark.sql.shuffle.partitions )为200,在实际项目中要合理的设置。...在构建SparkSession实例对象时,设置参数的值 好消息:在Spark3.0开始,不用关心参数值,程序自动依据Shuffle时数据量,合理设置分区数目。

    2.3K40

    SQL、Pandas和Spark:常用数据查询操作对比

    SQL查询的几个关键字,重点讲解在Pandas和Spark中的实现。...02 Pandas和Spark实现SQL对应操作 以下按照SQL执行顺序讲解SQL各关键字在Pandas和Spark中的实现,其中Pandas是Python中的数据分析工具包,而Spark作为集Java...另外,concat也可通过设置axis=1参数实现横向两表的横向拼接,但更常用于纵向的union操作。...Spark:相较于Pandas中有多种实现两个DataFrame连接的方式,Spark中接口则要单一许多,仅有join一个关键字,但也实现了多种重载方法,主要有如下3种用法: // 1、两个DataFrame...中的query实现的正是对标SQL中的where语法,在实现链式筛选查询中非常好用,具体可参考Pandas用了一年,这3个函数是我的最爱…… where语句,Pandas以API丰富而著称,所以自然是不会放过

    2.5K20

    简单回答:SparkSQL数据抽象和SparkSQL底层执行过程

    然而,对于没有MapReduce和函数式编程经验的新手来说,RDD API仍然存在着一定的门槛。...为了解决这一矛盾,Spark SQL 1.3.0在原有SchemaRDD的基础上提供了与R和Pandas风格类似的DataFrame API。...总结: Dataset是在Spark1.6中添加的新的接口,是DataFrame API的一个扩展,是Spark最新的数据抽象,结合了RDD和DataFrame的优点。...与RDD相比:保存了更多的描述信息,概念上等同于关系型数据库中的二维表; 与DataFrame相比:保存了类型信息,是强类型的,提供了编译时类型检查,调用Dataset的方法先会生成逻辑计划,然后被Spark...1.API 层简单的说就是 Spark 会通过一些 API 接受 SQL 语句 2.收到 SQL 语句以后, 将其交给 Catalyst, Catalyst 负责解析 SQL, 生成执行计划等 3.Catalyst

    1.9K30

    基于 Spark 的数据分析实践

    在Spark1.6中有两个核心组件SQLcontext和HiveContext。...Transformer 是基于 source 定的数据视图可执行的一组转换 SQL,该 SQL 符合 SparkSQL 的语法(SQL99)。...regiserDataFrameAsTable 是每个 source 和 Transform 的数据在 SparkSQL 中的数据视图,每个视图都会在 SparkContex 中注册一次。...在参与部分项目实施过程中,通过对一些开发中的痛点针对性的提取了应用框架。 问4:对于ETL中存在的merge、update的数据匹配、整合处理,Spark SQL Flow有没有好的解决方法?...答:blink 是阿里巴巴在 flink 基础上做了部分场景优化(只是部分社区有介绍,并不明确)并且开源,但是考虑到国内这些机构开源往往是没有持久动力的。要看采用 Blink 是否用了比较关键的特性。

    1.8K20

    SparkSQL

    通过JDBC或者ODBC来连接 二、Spark SQL编程 1、SparkSession新API 在老的版本中,SparkSQL提供两种SQL查询起始点: 一个叫SQLContext,用于Spark自己提供的...SparkSession是Spark最新的SQL查询起始点,实质上是SQLContext和HiveContext的组合,所以在SQLContext和HiveContext上可用的API在SparkSession...在Spark SQL中SparkSession是创建DataFrame和执行SQL的入口,创建DataFrame有三种方式: 通过Spark的数据源进行创建; val spark: SparkSession...2.2 SQL 语法 SQL语法风格是指我们查询数据的时候使用SQL语句来查询,这种风格的查询必须要有临时视图或者全局视图来辅助。 视图:对特定表的数据的查询结果重复使用。...("insert into user values(1,'zs')") 查询数据 spark.sql("select * from user").show 注意:然而在实际使用中,几乎没有任何人会使用内置的

    35050

    DataFrame和Dataset简介

    一、Spark SQL简介 Spark SQL 是 Spark 中的一个子模块,主要用于操作结构化数据。...它具有以下特点: 能够将 SQL 查询与 Spark 程序无缝混合,允许您使用 SQL 或 DataFrame API 对结构化数据进行查询; 支持多种开发语言; 支持多达上百种的外部数据源,包括 Hive...DataFrame 是一个由具名列组成的数据集。它在概念上等同于关系数据库中的表或 R/Python 语言中的 data frame。...在 Spark 2.0 后,为了方便开发者,Spark 将 DataFrame 和 Dataset 的 API 融合到一起,提供了结构化的 API(Structured API),即用户可以通过一套标准的...四、Spark SQL的运行原理 DataFrame、DataSet 和 Spark SQL 的实际执行流程都是相同的: 进行 DataFrame/Dataset/SQL 编程; 如果是有效的代码,即代码没有编译错误

    2.2K10

    Spark_Day07:Spark SQL(DataFrame是什么和数据分析(案例讲解))

    ) 编写DSL,调用DataFrame API(类似RDD中函数,比如flatMap和类似SQL中关键词函数,比如select) 编写SQL语句 注册DataFrame为临时视图 编写SQL...1、Spark 1.0之前 Shark = Hive + Spark 将Hive框架源码,修改其中转换SQL为MapReduce,变为转换RDD操作,称为Shark 问题: 维护成本太高,没有更多精力在于框架性能提升...05-[掌握]-DataFrame是什么及案例演示 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。...原因:在SparkSQL中当Job中产生Shuffle时,默认的分区数(spark.sql.shuffle.partitions )为200,在实际项目中要合理的设置。...在构建SparkSession实例对象时,设置参数的值 好消息:在Spark3.0开始,不用关心参数值,程序自动依据Shuffle时数据量,合理设置分区数目。

    2.6K50

    【精通Spark系列】一文搞懂Spark的运行架构,文末附带大数据Spark的学习路线

    而spark在每个计算节点中是可以通过内存来传递结果的,而且提供了更好的上层API,相比之下Spark就具有了和明显的优势。Spark提供了多种算子做计算,支持多种语言。...虽然spark本身没有提供类似于HDFS的分布式文件系统,但是他可以和hadoop生态的众多框架整合,可以访问多种数据库,包括redis都可以整合。...Spark SQL: Spark SQL在spark-core的基础之上又推出一个DataSet与DataFrame的数据抽象化概念。提供了在DataSet与DataFrame之上执行SQL的能力。...MLlib提供的上面这些方法,都支持集群上的横向扩展。 Graphx: Graphx是分布式图计算框架。是用来处理图的库(例如,社交网络图),并进行图的并行计算。...像Spark Streaming,Spark SQL一样,它也继承了RDD API。它提供了各种图的操作,和常用的图算法,例如PangeRank算法。

    89260

    Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

    全局临时视图 Spark SQL中的临时视图是session级别的, 也就是会随着session的消失而消失....如果你想让一个临时视图在所有session中相互传递并且可用, 直到Spark 应用退出, 你可以建立一个全局的临时视图.全局的临时视图存在于系统数据库 global_temp中, 我们必须加上库名去引用它...--jars postgresql-9.4.1207.jar 可以使用 Data Sources API 将来自远程数据库的表作为 DataFrame 或 Spark SQL 临时视图进行加载。...在 DDL 没有指定精度时,则默认保留 Decimal(10, 0)。 时间戳现在存储在 1 微秒的精度,而不是 1 纳秒的。...从 Spark SQL 1.0-1.2 升级到 1.3 在 Spark 1.3 中,我们从 Spark SQL 中删除了 “Alpha” 的标签,作为一部分已经清理过的可用的 API 。

    26.1K80
    领券