什么是内心加盟?

时间:2019-03-21 13:53:48

标签: sql apache-spark apache-spark-sql

在用于连接策略的Spark源代码中,提到了广播哈希连接(BHJ)的代码注释:

  

完全外部联接不支持BHJ。对于正确的外部连接,我们   只能播放左侧。对于左外,左半,左反   和内部联接类型ExistenceJoin,我们只能广播   右边。对于内部喜欢的连接,我们可以广播双方。   通常,在以下情况下,BHJ的执行速度会比其他联接算法快   广播方面很小。但是,广播表是一个   网络密集型操作。可能会导致OOM或比   其他联接算法,尤其是在构建/广播端为   大。

您能否解释一下

所代表的代码注释是什么意思
  

“内心的连接”

code link

2 个答案:

答案 0 :(得分:3)

根据a doc for the dataset join operators innerlike用于INNER和CROSS连接。

  

您还可以发现Spark SQL使用以下两个系列的   加入:

     
      
  • 与内在和十字架的InnerLike
  •   
  • 具有LeftSemi,LeftAnti和ExistenceJoin的LeftExistence
  •   

答案 1 :(得分:1)

最后在代码中找到:joinTypes.scala

InnerLike包括:内部联接和交叉联接。

sealed abstract class InnerLike extends JoinType {
  def explicitCartesian: Boolean
}

case object Inner extends InnerLike {
  override def explicitCartesian: Boolean = false
  override def sql: String = "INNER"
}

case object Cross extends InnerLike {
  override def explicitCartesian: Boolean = true
  override def sql: String = "CROSS"
}
相关问题