Spark 2.x的spark.sql.crossJoin.enabled

Sti*_*ijn 9 apache-spark google-cloud-dataproc

我正在使用Spark 2.0.0的"预览"Google DataProc Image 1.1.为了完成我的一项操作,我必须完成一个笛卡尔积.从版本2.0.0开始,创建了一个spark配置参数(spark.sql.cross Join.enabled),禁止使用笛卡尔积,并抛出异常.如何设置spark.sql.crossJoin.enabled = true,最好是使用初始化操作? spark.sql.crossJoin.enabled=true

zer*_*323 20

Spark 2.1+

你可以使用spark.sql.crossJoin.enable:

df1.crossJoin(df2)
Run Code Online (Sandbox Code Playgroud)

它使您的意图明确,并保持更加保守的配置,以保护您免受意外的交叉连接.

Spark 2.0

SQL属性可以在运行时使用crossJoin方法动态设置,因此您应该能够调用

spark.conf.set("spark.sql.crossJoin.enabled", true)
Run Code Online (Sandbox Code Playgroud)

无论何时你想明确允许笛卡尔积.

  • 如果你在 iPython 中工作,“true”应该是“True” (2认同)

Den*_*Huo 5

要更改 Dataproc 中配置设置的默认值,您甚至不需要 init 操作,您可以在从命令行创建集群时使用--properties 标志

gcloud dataproc clusters create --properties spark:spark.sql.crossJoin.enabled=true my-cluster ...
Run Code Online (Sandbox Code Playgroud)