在Apache Spark中是否可以在某些地方访问定义为常量的连接类型?

Tob*_*and 5 scala apache-spark apache-spark-sql

粗略浏览一下Spark代码库后,我还没有找到它们。在大多数文档和教程示例中,人们似乎正在使用“裸”字符串文字来指定联接类型。Spark是否提供了将“ leftouter”,“ inner”,“ cartesian”等定义为public val的对象或类,还是仅依赖于字符串常量?

也就是说,是否可以替代:

dataframe.join(
  right = anotherDataFrame,
  joinExprs = expr("1 = 1"),
  joinType = "leftouter"
)
Run Code Online (Sandbox Code Playgroud)

看起来像:

dataframe.join(
  right = anotherDataFrame, 
  joinExprs = expr("1 = 1"),
  joinType = SparkJoins.LeftOuter
)
Run Code Online (Sandbox Code Playgroud)

evi*_*has 1

您可以使用包中包含的对象,例如,对每个文字使用以下对象:

  • 对于“内部”=>org.apache.spark.sql.catalyst.plans.Inner.sql
  • 对于“左外”=>org.apache.spark.sql.catalyst.plans.LeftOuter.sql
  • ETC。

来源: https: //github.com/apache/spark/blob/master/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/joinTypes.scala