1 dataframe中指明广播join
// 1 广播变量参数
conf.set( "spark.sql.autoBroadcastJoinThreshold", "104857600" ) //广播表的上限:单位为B,现设置最大广播100M的表;
conf.set( "spark.sql.broadcastTimeout", "-1" ) //广播超时时间: 单位为ms, -1为永不超时;
// 2 引入需要的包
import org.apache.spark.sql.functions._
// 3 内关联eid码表(显示指明为广播join)
val join_eid_df = parse_df
.join( broadcast( eid_t8_df ), Seq( "tid", "event" ) )
2 sql语句中显示的指明广播join
// 处理语句
val deal_sql =
"""
|select /*+ broadcast (a) */ *
|from range(10) a, range(100) b
|where a.id = b.id
|""".stripMargin
// 执行处理语句
val res=spark.sql(deal_sql)
// 打印执行计划
res.explain()
// 打印结果
res.show()