spark SQL 性能调整

对于某些工作负载,可以通过在内存中缓存数据或打开一些实验选项来提高性能。

1,在内存中缓存数据
       Spark SQL可以通过调用spark.catalog.cacheTable("tableName")或使用内存中的列格式缓存表dataFrame.cache()。然后,Spark SQL将只扫描所需的列,并自动调整压缩以最大限度地减少内存使用和GC压力。你可以调用spark.catalog.uncacheTable("tableName")从内存中删除表。

       内存中缓存的配置可以使用上面的setConf方法SparkSession或SET key=value使用SQL 运行 命令来完成。
属性名称 默认 含义
spark.sql.inMemoryColumnarStorage.compressed true 设置为true时,Spark SQL将根据数据的统计信息自动为每列选择压缩编解码器。
spark.sql.inMemoryColumnarStorage.batchSize 10000 控制列式高速缓存的批量大小。较大的批量大小可以提高内存利用率和压缩率,但是在缓存数据时会面临OOM风险。

2,其他配置选项
以下选项也可用于调整查询执行的性能。在将来的版本中,这些选项可能会被弃用,因为会自动执行更多的优化。
属性名称 默认 含义
spark.sql.files.maxPartitionBytes 134217728(128 MB) 读取文件时打包到单个分区的最大字节数。
spark.sql.files.openCostInBytes 4194304(4 MB) 可以同时扫描以字节数量度量的打开文件的估计成本。将多个文件放入分区时使用。

最好是高估,那么小文件的分区会比大文件的分区快(这是首先安排的)。
spark.sql.broadcastTimeout 300 广播连接中的广播等待时间以秒为单位超时
spark.sql.autoBroadcastJoinThreshold 10485760(10 MB) 配置在执行连接时将广播到所有工作节点的表的最大大小(以字节为单位)。通过将

此值设置为-1,可以禁用广播。请注意,目前只有ANALYZE TABLE <tableName>

COMPUTE STATISTICS noscan运行命令的Hive Metastore表才支持统计信息 。
spark.sql.shuffle.partitions 200 配置混洗连接或聚合数据时要使用的分区数。

3, 分布式SQL引擎
         Spark SQL也可以使用其JDBC / ODBC或命令行界面作为分布式查询引擎。在这种模式下,最终用户或应用程序可以直接与Spark SQL进行交互以运行SQL查询,而无需编写任何代码。
4, 运行Thrift JDBC / ODBC服务器

这里实现的Thrift JDBC / ODBC服务器对应HiveServer2 于Hive
1.2.1。您可以使用Spark或Hive 1.2.1附带的beeline脚本测试JDBC服务器。 要启动JDBC / ODBC服务器,请在Spark目录中运行以下命令:

./sbin/start-thriftserver.sh

该脚本接受所有的bin/spark-submit命令行选项,还有一个--hiveconf选项来指定Hive属性。您可以运行./sbin/start-thriftserver.sh
--help
所有可用选项的完整列表。默认情况下,服务器侦听localhost:10000。你可以通过两个环境变量覆盖这个行为,即:

export HIVE_SERVER2_THRIFT_PORT=<listening-port>
export HIVE_SERVER2_THRIFT_BIND_HOST=<listening-host>
./sbin/start-thriftserver.sh \
--master <master-uri> \
...

或系统属性:

./sbin/start-thriftserver.sh \
--hiveconf hive.server2.thrift.port=<listening-port> \
--hiveconf hive.server2.thrift.bind.host=<listening-host> \
--master <master-uri>
...

现在,您可以使用直线来测试Thrift JDBC / ODBC服务器:

./bin/beeline

使用以下命令直接连接到JDBC / ODBC服务器:

beeline> !connect jdbc:hive2://localhost:10000

直线会问你一个用户名和密码。在非安全模式下,只需在您的机器上输入用户名和密码即可。对于安全模式,请按照直线文档中的 说明进行操作

hive 的结构是通过将您做hive-site.xmlcore-site.xmlhdfs-site.xml文件conf/

您也可以使用Hive附带的直线脚本。

Thrift JDBC服务器还支持通过HTTP传输发送节俭的RPC消息。使用以下设置启用HTTP模式作为系统属性或在hive-site.xml文件中conf/

hive.server2.transport.mode - Set this to value: http
hive.server2.thrift.http.port - HTTP port number to listen on; default is 10001
hive.server2.http.endpoint - HTTP endpoint; default is cliservice

要测试,使用直线连接到HTTP模式下的JDBC / ODBC服务器:

beeline> !connect jdbc:hive2://<host>:<port>/<database>?hive.server2.transport.mode=http;hive.server2.thrift.http.path=<http_endpoint>

5, 运行Spark SQL CLI

Spark SQL CLI是一种方便的工具,可以在本地模式下运行Hive Metastore服务,并从命令行执行查询输入。请注意,Spark SQL CLI无法与Thrift JDBC服务器通信。

要启动Spark SQL CLI,请在Spark目录中运行以下命令:
./bin/spark-sql

hive的结构是通过将您做hive-site.xmlcore-site.xmlhdfs-site.xml文件conf/。您可以运行./bin/spark-sql
--help
所有可用选项的完整列表。











spark SQL(六)性能调整的更多相关文章

  1. oracle管理优化必备语句以及oracle SQL语句性能调整

    本文转自http://www.dataguru.cn/article-3302-1.html oracle数据库管理优化必备语句: 1. SELECT T.START_TIME,T.USED_UBLK ...

  2. 自适应查询执行:在运行时提升Spark SQL执行性能

    前言 Catalyst是Spark SQL核心优化器,早期主要基于规则的优化器RBO,后期又引入基于代价进行优化的CBO.但是在这些版本中,Spark SQL执行计划一旦确定就不会改变.由于缺乏或者不 ...

  3. SQL语句性能调整原则

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统 ...

  4. spark sql 的性能调优

    Caching Data in Memory 其他调优参数

  5. Spark SQL概念学习系列之性能调优

    不多说,直接上干货! 性能调优 Caching Data In Memory Spark SQL可以通过调用sqlContext.cacheTable("tableName") 或 ...

  6. Spark学习之Spark SQL

    一.简介 Spark SQL 提供了以下三大功能. (1) Spark SQL 可以从各种结构化数据源(例如 JSON.Hive.Parquet 等)中读取数据. (2) Spark SQL 不仅支持 ...

  7. Spark SQL 官方文档-中文翻译

    Spark SQL 官方文档-中文翻译 Spark版本:Spark 1.5.2 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 Data ...

  8. Spark SQL 之 Performance Tuning & Distributed SQL Engine

    Spark SQL 之 Performance Tuning & Distributed SQL Engine 转载请注明出处:http://www.cnblogs.com/BYRans/ 缓 ...

  9. Spark SQL原理及实战

    一.Spark SQL的发展 1.spark SQL和shark SparkSQL的前身是Shark,给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具,Hive应运而生,它是当 ...

  10. Oracle性能调整ASH,AWR,ADDM

    ASH (Active Session History)ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件.不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成.ASH ...

随机推荐

  1. 最实用的visual studio插件,值得收藏!

    1.ReSharper(VS必装,代码重构.代码修正功能) ReSharper 是一个JetBrains公司出品的著名的代码生成工具.其能帮助Microsoft Visual Studio成为一个更佳 ...

  2. maven项目pom.xml解析

  3. 风炫安全Web安全学习第十六节课 高权限sql注入getshell

    风炫安全Web安全学习第十六节课 高权限sql注入getshell sql高权限getshell 前提条件: 需要知道目标网站绝对路径 目录具有写的权限 需要当前数据库用户开启了secure_file ...

  4. python后端开发面试总结

    网络协议 通信计算机双方必须共同遵从的一组约定,只有遵守这个约定,计算机之间才能相互通信交流 TCP / IP TCP/IP(传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇.TC ...

  5. JVM 源码分析(二):搭建 JDK 8 源码调试环境(Windows 上使用 CLion)

    前言 一.准备源码 二.安装 "Bootstrap JDK" 三.配置编译环境 四.编译与测试 五.安装 CMake 和 GDB 五.准备远程调试 六.开始远程调试 前言 上一篇文 ...

  6. 想学Python不知如何入门,教你!

    一.入门引导   想必有很多小伙伴想学习Python,又不知道如何入门,总觉得学习一定要头悬梁,锥刺股!NO,今天给大家分享下如何轻松入门Python!   首先,我们要学习Python,那一定要和你 ...

  7. 【Flutter】布局类组件之对齐和相对定位

    前言 如果只想简单的调整一个子元素在父元素中的位置的话,使用Align组件会更简单一些. 接口描述 const Align({ Key key, // 需要一个AlignmentGeometry类型的 ...

  8. 来不及解释!Linux常用命令大全,先收藏再说

    摘要:Linux常用命令,很适合你的. 一提到操作系统,我们首先想到的就是windows和Linux.Windows以直观的可视化的方式操作,特别适合在桌面端PC上操作执行相应的软件.相比较Windo ...

  9. 基于 MPI/OpenMP 混合编程的大规模多体(N-Body)问题仿真实验

    完整代码: #include <iostream> #include <ctime> #include <mpi.h> #include <omp.h> ...

  10. Linux学习笔记 | 常见错误之账户密码正确但是登录不进去系统

    前言: 笔者今日由于Linux版本的原因,需要Linux内核版本不能太高的系统,而日常使用的ubuntu系统不能满足需求,于是新建了一个虚拟机,选用的系统是Ubuntu16的,配置了一下午的各种依赖环 ...