谈一谈spark SQL的调优经验

什么是spark SQL

SQL是一种结构化的数据库查询语言。而spark SQL是spark套件中的一个组件,它将数据的计算任务通过SQL的形式转换成了RDD的计算,类似于hive通过SQL的形式将数据的计算任务转换成了MapReduce。
通常来说Hadoop是一整套大数据解决方案,包括了存储(HDFS)、计算(MapReduce)和资源调度管理(Yarn)。hive是Hadoop生态发展起来的一个数据仓库,可以使用hive SQL实现MR,并且将HDFS映射成表。而spark是基于内存计算的大数据并行计算框架,可以更快第实现数据计算。

spark SQL执行步骤

大部分的SQL,解析执行过程类似:通常用户在客户端发送SQL请求,先判断请求是否合法,包括权限检查等;然后SQL解析器对SQL进行语法语义的解析,SQL优化器会生成最优执行计划。
SQL执行步骤示意图

spark SQL执行顺序

要对SQL调优,肯定是要对SQL关键字执行顺序有所认识。这样便于我们更好地调整SQL。以下是一条SQL所有关键字执行顺序。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark SQL参数可以分为以下几类: 1. Spark SQL的通用参数: - `spark.sql.shuffle.partitions`:控制shuffle操作时的分区数,默认值为200。 - `spark.sql.autoBroadcastJoinThreshold`:控制自动广播的表大小,默认为10MB。 - `spark.sql.broadcastTimeout`:控制广播超时时间,默认值为5分钟。 - `spark.sql.execution.arrow.enabled`:控制是否启用Arrow化,默认为false。 2. Spark SQL的查询化参数: - `spark.sql.cbo.enabled`:控制是否启用基于成本的化器(CBO),默认为false。 - `spark.sql.statistics.histogram.enabled`:控制是否启用直方图统计信息,默认为false。 - `spark.sql.statistics.ndv.scale.factor`:控制基数估计的规模因子,默认为2.0。 - `spark.sql.inMemoryColumnarStorage.compressed`:控制是否启用列式存储压缩,默认为true。 - `spark.sql.adaptive.enabled`:控制是否启用自适应查询执行,默认为false。 3. Spark SQL的内存管理参数: - `spark.sql.shuffle.memoryFraction`:控制shuffle操作的内存占比,默认为0.2。 - `spark.sql.execution.arrow.maxRecordsPerBatch`:控制Arrow批处理的最大行数,默认为1024。 - `spark.sql.execution.sort.externalSorter.maxMemoryUsage`:控制外部排序的内存占比,默认为0.4。 - `spark.sql.execution.arrow.fallback.enabled`:控制是否开启Arrow化失败时的回退机制,默认为true。 4. Spark SQL试参数: - `spark.sql.debug.maxToStringFields`:控制最大的toString字段数目,默认为25。 - `spark.sql.debug.maxPlanStringLength`:控制最大的计划字符串长度,默认为1000。 以上仅列举了一部分常用的Spark SQL参数,具体使用时需要根据实际情况进行选择和整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值