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

陌陌:使用Spark SQL和Alluxio加速Ad Hoc查询

希望通过本文,大家对Alluxio的使用场景更详细了解,后面结合spark streaming浪尖会制作一个demo。...性能评估 我们抽取了四个不同大小的线上查询作实验,并且以四种不同环境运行这些查询, 后文以不同模式来区分这些环境: Yarn模式,是当前线上的生产环境。...Alluxio模式,在标签集群上运行配置了Alluxio 作为中间层, 并启用RAM和HDD层的 Spark 计算环境。...但是,一旦缓存数据量超过了JVM的内存,Spark就不能保持相应的性能效果了,而因为Alluxio使用的堆外内存技术所以不受相应限制。...因此,如果SQL是一个涉及缓存白名单中表的数据查询,那么表的路径将会被转换为一个Alluxio的URI,这样应用程序就可以从Alluxio读取相关数据。

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

    spark sql简单查询千亿级库表导致的问题

    一、问题现象 今天有客户咨询到我们,他们利用spark sql查询简单的sql: select * from datetable limit 5; //假设表名是datetable 结果报错内存溢出:...因此,我们用hive原生sql查询,发现不存在这个问题。 二、排查问题 经过分析,发现被查询的表数据量特别大,整个表有1000多亿行数据。...数据表存储在HDFS的目录结构也是: /${hive-warehouse}/dbname/tablename/dt=xxx/hour=xxx/files 根据之前使用spark sql的经验、以及逛社区查找的信息...sql至少会扫描一个完整的第一重分区的数据,当数据量很大的时候,因此往往会出现内存不足。...三、验证结论 1、首先我们直接用spark sql查询: select * from datetable limit 5; 从日志可以查看出excutor在疯狂地扫描HDFS的文件: 而且这些被扫描的

    5.2K40

    抽象SQL查询:SQL-MAP技术的使用

    有部份的开发人员可能会认为使用参数化查询,会让程序更不好维护,或者在实现部份功能上会非常不便,然而,使用参数化查询造成的额外开发成本,通常都远低于因为SQL注入攻击漏洞被发现而遭受攻击,所造成的重大损失...原理   在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成 SQL 指令的编译后,才套用参数运行,因此就算参数中含有具有损的指令,也不会被数据库所运行...上面这种参数形式是写在SQL-MAP配置文件里面的,例如下面的一个实际的SQL-MAP查询脚本: SQL语句,即SQL语句中有一个“假参数”,在运行时由另外一个字符串来替换的,例如非常复杂的查询条件拼接过程,请参看: 在SQLMAP中使用动态SQL 通过这种方式,完全屏蔽了不同种类的数据库查询的参数问题...有了这个SQL-MAP文件,我们可以使用代码工具自动生成下面的代码(当然你也可以手写): 从上面的过程可以看出,框架采用SQL-MAP技术,将SQL语句(包括各种查询的单条SQL语句和存储过程等)映射成了

    2.3K100

    如何让你的 Spark SQL 查询加速数十倍?

    先来回答标题所提的问题,这里的答案是列存储,下面对列存储及在列存储加速 Spark SQL 查询速度进行介绍 列存储 什么是列存储 传统的数据库通常以行单位做数据存储,而列式存储(后文均以列存储简称)以列为单位做数据存储...优势 列存储相比于行存储主要有以下几个优势: 数据即索引,查询是可以跳过不符合条件的数据,只读取需要的数据,降低 IO 数据量(行存储没有索引查询时造成大量 IO,建立索引和物化视图代价较大) 只读取需要的列...,进一步降低 IO 数据量,加速扫描性能(行存储会扫描所有列) 由于同一列的数据类型是一样的,可以使用高效的压缩编码来节约存储空间 当然列存储并不是在所有场景都强于行存储,当查询要读取多个列时,行存储一次就能读取多列...Spark 原始支持 parquet 和 orc 两个列存储,下文的实践使用 parquet 使用 Parquet 加速 Spark SQL 查询 在我的实践中,使用的 Spark 版本是 2.0.0,...使用 Parquet 格式的列存储主要带来三个好处 大大节省存储空间 使用行存储占用 44G,将行存储转成 parquet 后仅占用 5.6G,节省了 87.2% 空间,使用 Spark 将数据转成列存储耗时

    1.8K40

    浅析JDBC的ResultSet接口和使用MySQL语句查询数据

    一、前言 在《浅析JDBC常用的接口——JDBC的Statement接口、PreparedStatement接口》文章中,我们介绍了使用Java语言来执行SQL语句。...本文主要给大家介绍在Java语言中,通过执行SQL语句后,如何使用ResultSet接口来获取表中的数据、使用MySQL语句查询表中的数据,接下来小编带大家一起来学习!...四、MySQL语句查询数据具体步骤 对MySQL数据库表中进行查询操作具体步骤如下所示: 1)使用Statement对象创建一个SQL语句对象,使用createStatement()方法。...2.在上面介绍了MySQL语句查询数据具体步骤,接下来,小编通过一个案例带大家一起了解使用MySQL语句查询数据的用法,代码如下所示: import java.sql.Connection; import...3.本文还介绍了MySQL语句查询数据的具体步骤,并通过一个案例来帮助大家理解使用MySQL语句查询数据的用法。 4.希望大家通过本文的学习,对你有所帮助!

    1.8K40

    以编程方式执行Spark SQL查询的两种实现方式

    摘 要 在自定义的程序中编写Spark SQL查询程序 1.通过反射推断Schema package com.itunic.sql import org.apache.spark.sql.SQLContext...  * Spark SQL   * 通过反射推断Schema   * by me:   * 我本沉默是关注互联网以及分享IT相关工作经验的博客,   * 主要涵盖了操作系统运维、计算机编程、项目开发以及系统架构等经验...{SparkConf, SparkContext} import org.apache.spark.sql....{Row, SQLContext} import org.apache.spark.sql.types._ /**   * Created by itunic.com on 2017/1/2....  *  Spark SQL   * 通过StructType直接指定Schema   * by me:   * 我本沉默是关注互联网以及分享IT相关工作经验的博客,   * 主要涵盖了操作系统运维、

    2K20

    spark2.0.1安装部署及使用jdbc连接基于hive的sparksql

    1、安装     如下配置,除了配置spark还配置了spark history服务 #先到http://spark.apache.org/根据自己的环境选择编译好的包,然后获取下载连接 cd /opt...spark://hadoop-n:7077 #对sql查询进行字节码编译,小数据量查询建议关闭 spark.sql.codegen.../spark-sql 注意执行命令后提示的webui的端口号,通过webui可以查询对应监控信息。 启动thriftserver cd $SPARK_HOME/sbin ....3、使用jdbc连接基于hive的sparksql a)如果hive启动了hiveserver2,关闭 b)执行如下命令启动服务 cd $SPARK_HOME/sbin ....ssh免密码登录 不要忘记拷贝hive的配置文件,不然spark会在本地创建物理数据库文件 hive启动时提示ls: cannot access /opt/spark/spark-2.0.1-bin-hadoop2.6

    1.7K30

    SQL使用(一):如何使用SQL语句去查询第二高的值

    今天刷MYSQL题的时候刷到这样一个题: 编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。...,可以使用max和min去查询出来,但对于第N的就不好找了,思考了一会儿了,心里大致有二个思路: 第一个思路,因为是求的第二高,那就把最高的找出来,小于的它的,然后再排列一下取最大的就行了 # 1、求最大的值...这道题主要考察的知识点就是LIMIT的使用和对NULL的处理,之前写过一篇与LIMIT有关的文章,LIMIT在实际使用过程使用情况非常普遍。...知识点总结: LIMIT LIMIT 一般都是放在SQL语句的最后,是对展示的结果做一个限制输出,比如查询了十条记录,但只展示一条,那就可以在SQL语句后面加一个LIMIT 1。...# offset为偏移量,表示从哪条数据开始返回,使用过程中也可以省略 举例: 1、查询出雇员表中的5条记录 select * from Employee limit 5; 2、查询出雇员表第二条数据后的

    5.7K10

    03-SparkSQL入门

    当从另一种编程语言中运行SQL时,结果将作为Dataset/DataFrame返回。还可使用命令行或通过JDBC/ODBC与SQL接口交互。...3 特性 3.1 集成性 Spark SQL可让你在Spark程序用SQL或熟悉的DataFrame API查询结构化数据。可在Java、Scala、Python和R中使用。...它可使SQL查询与Spark程序无缝混合。 3.2 统一数据访问 DataFrames和SQL提供了一种通用方式访问各种数据源如Hive、Avro、Parquet、ORC、JSON和JDBC。...通过该功能,可通过JDBC或ODBC连接到Spark SQL并进行数据查询和操作。 4 架构 5 spark-submit 启动应用程序 一旦绑定用户应用程序,就能用spark-submit启动。...设置Spark SQL的类路径,包含了Spark的jar包和配置文件。 使用spark-submit命令启动Spark SQL的服务。

    13700

    Kyuubi高可用架构

    作为建立在 Apache Spark 之上的企业级即席 SQL 查询服务,Kyuubi 以高可用性 (HA) 为主要特征,旨在确保约定的服务可用性级别,例如高于正常运行时间。...在 HA 模式下运行 Kyuubi 是在 Kyuubi 上使用支持 SQL 查询服务的计算机或容器组,这些服务可以在最少的停机时间内可靠地使用。...负载均衡旨在优化所有 Kyuubi 服务单元的使用,最大化吞吐量,最小化响应时间,避免单个单元过载。 使用具有负载平衡功能的多个 Kyuubi 服务单元而不是单个单元可以通过冗余提高可靠性和可用性。...更多配置请参见Kyuubi配置系统简介的HA部分 伪分布模式 当 kyuubi.ha.zookeeper.quorum 没有配置时,一个 k.i. 将启动一个内嵌的 zookeeper 服务。...客户端使用 使用 Kyuubi Hive JDBC Driver 或 vanilla Hive JDBC Driver,客户端可以在 JDBC 连接字符串中指定服务发现模式,即 serviceDiscoveryMode

    1.5K30

    SuperSQL:跨数据源、跨DC、跨执行引擎的高性能大数据SQL中间件

    SuperSQL的目标是成为公司内部统一的SQL分析中间件,实现以下三点的价值: 解决业务数据孤岛,最大化数据的使用价值 执行引擎最优选择,提升业务使用数据效率 优化集群资源使用,解决业务资源使用瓶颈...:对比SuperSQL和Spark JDBC的99条SQL的平均时间,耗时短的更快; 性能提升:Spark JDBC的平均执行时间除以SuperSQL的平均执行时间,表示SuperSQL相比Spark基线查询响应时间降低的倍数...图中横轴代表了SuperSQL某条SQL的查询时间除以对应Spark JDBC该SQL的查询时间,然后按照Spark时间的0.5倍以内和...)SQL的SuperSQL的查询时间只占到Spark JDBC查询时间的20%以下。...这也反映了SuperSQL在相同参数配置的情况下,比Spark JDBC应对复杂query的处理能力整体更加优异,对原SQL的优化和处理是卓有成效的。

    8.8K104

    SuperSQL:跨数据源、跨DC、跨执行引擎的高性能大数据SQL中间件

    SuperSQL的目标是成为公司内部统一的SQL分析中间件,实现以下三点的价值: 解决业务数据孤岛,最大化数据的使用价值 执行引擎最优选择,提升业务使用数据效率 优化集群资源使用,解决业务资源使用瓶颈...和Spark JDBC的99条SQL的平均时间,耗时短的更快; 性能提升:Spark JDBC的平均执行时间除以SuperSQL的平均执行时间,表示SuperSQL相比Spark基线查询响应时间降低的倍数...图中横轴代表了SuperSQL某条SQL的查询时间除以对应Spark JDBC该SQL的查询时间,然后按照Spark时间的0.5倍以内和...)SQL的SuperSQL的查询时间只占到Spark JDBC查询时间的20%以下。...这也反映了SuperSQL在相同参数配置的情况下,比Spark JDBC应对复杂query的处理能力整体更加优异,对原SQL的优化和处理是卓有成效的。 平均耗时对比 ?

    3.6K50

    Apache Kyuubi + Hudi在 T3 出行的深度实践

    如果能将平台的能力统合,并不断地优化和迭代,让用户能够通过 JDBC 和 SQL 这种最普遍最通用的技术来使用,数据生产力将可以得到进一步的提升。...STS(Spark Thrift Server)支持HiveServer 的接口和协议,允许用户直接使用 Hive 接口提交 SQL 作业。...目前,Kyuubi 在T3出行支撑了80%的离线作业,日作业量在1W+。 image.png 联邦查询场景 公司内部使用多种数据存储系统,这些不同的系统解决了对应的使用场景。...由此我们可以将查询规则下推到 JDBC 等数据源,在不同数据源层面上进行一些过滤,再将计算结果返回给 Spark,这样可以减少数据的量,从而提高查询效率。...增加了Hudi datasource 模块,使用 Spark datasource 计划查询 Hudi,提高对 Hudi 的查询效率 集成 Hudi 社区的 update、delete 语法,新增了

    1.7K60
    领券