SparkSQL_SparkSQL_Hint 类似HIVE中的 hint

转载于:

1.关于sparksql中的hint

https://www.cnblogs.com/lestatzhang/p/10669547.html

 

前言

在Spark中,结构化查询可以通过指定查询提示(hint)来进行优化。

查询提示,即向查询加入注释,告诉查询优化器提供如何优化逻辑计划, 这在查询优化器无法做出最佳决策时十分有用。

Spark SQL支持COALESCE,REPARTITION以及BROADCAST提示。 在分析查询语句时,所有剩余的未解析的提示将从查询计划中被移除。

Spark SQL 2.2增加了对提示框架(Hint Framework)的支持。

如何使用查询提示hint

我们可以使用Dataset.hint运算符或带有提示的SELECT SQL语句指定查询提示。

// Dataset API

val q = spark.range(1).hint(name = "myHint", 100, true)

val plan = q.queryExecution.logical

scala> println(plan.numberedTreeString)

00 'UnresolvedHint myHint, [100, true]

01 +- Range (0, 1, step=1, splits=Some(8))



// SQL

val q = sql("SELECT /*+ myHint (100, true) */ 1")

val plan = q.queryExecution.logical

scala> println(plan.numberedTreeString)

00 'UnresolvedHint myHint, [100, true]

01 +- 'Project [unresolvedalias(1, None)]

02 +- OneRowRelation

 

 

SELECT SQL语句支持查询提示作为SQL查询中的注释,Spark SQL将其转换为逻辑计划中的UnresolvedHint一元逻辑运算符。

 

COALESCE 和 REPARTITION 提示

Spark SQL 2.4增加了对COALESCE和REPARTITION提示的支持(使用SQL注释), 语法如下:

SELECT /*+ COALESCE(5) */ …​

SELECT /*+ REPARTITION(3) */ …​

 

 

Broadcast提示

Spark SQL 2.2支持使用广播标准函数或SQL注释的BROADCAST提示 ,语法如下:

SELECT /*+ MAPJOIN(b) */ …​

SELECT /*+ BROADCASTJOIN(b) */ …​

SELECT /*+ BROADCAST(b) */ …​

 

参考资料

Hint Framework

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值