当前位置: 首页 > 知识库问答 >
问题:

spark.sql.crossJoin。为Spark 2.x启用

薛兴德
2023-03-14

我正在使用带有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

共有3个答案

张积厚
2023-03-14

TPCDS查询集基准具有包含CROSS JOINS的查询,除非您显式地编写CROSS JOIN或动态地将Spark的默认属性设置为trueSpark.conf.set("spark.sql.crossJoin.enabled", true),否则您将遇到异常错误。

该错误出现在 TPCDS 查询 28、61、88 和 90 上,因为事务处理委员会 (TPC) 的原始查询语法包含逗号,并且 Spark 的默认联接操作是内部联接。我的团队还决定使用 CROSS JOIN 来代替更改 Spark 的默认属性。

卫鸿朗
2023-03-14

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

gcloud dataproc clusters create --properties spark:spark.sql.crossJoin.enabled=true my-cluster ...
督烨赫
2023-03-14

火花

spark.sql.crossJoin.enable默认为true(SPARK-28621)。

火花

您可以使用交叉联接

df1.crossJoin(df2)

它使您的意图明确,并保持更保守的配置,以防止意外的交叉连接。

火花2.0

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

spark.conf.set("spark.sql.crossJoin.enabled", true)

只要您想显式允许笛卡尔积。

 类似资料:
  • 在Spark2.1文档中提到 如何解释这些(冲突?)一些信息?

  • 当我运行pyspark program interactive shell时,可以获取pyspark脚本中的配置文件(config.ini),但当我试图使用Spark submit命令和主纱运行相同的脚本时,并且集群部署模式是集群,因为配置文件不存在,所以它给了我错误,我检查了纱日志,可以看到相同的,下面是运行pyspark作业的命令。

  • 我们正试图用普罗米修斯来获取火花指标。我们使用jmx导出器jmx_prometheus_javaagent-0.12.0.jar。 ./spark-submit--监督--部署模式集群--conf'spark.driver.extrajavaoptions=-javaagent:jars/jmx_prometheus_javaagent-0.12.0.jar=8060:/conf/spark.ym

  • 我将我的项目从Spring-Boot2.1.9移动到2.2.0。 在启动项目时,我面临下面的消息。 是什么导致了这个问题? pom.xml

  • 我在AWS CLB后面有一个nginx(k8s中的nginx入口)设置,根据HTTP头和经典负载平衡器以及经典负载平衡器的侦听器配置,我应该能够在nginx中接收X-Forwarded-Proto头。 但是在经历了CLB监听器配置之后,我没有看到任何关于这个设置的信息,我将其设置为转发TCP端口443并尝试在nginx中检查,返回null

  • 问题内容: 考虑以下示例: 我不确定Java语言规范中是否有一项规定要加载变量的先前值以便与右侧()进行比较,该变量应按照方括号内的顺序进行计算。 为什么第一个表达式求值,而第二个表达式求值?我本来希望先被评估,然后再与自身()比较并返回。 这个问题与Java表达式中子表达式的求值顺序不同,因为这里绝对不是“子表达式”。需要 加载 它以进行比较,而不是对其进行“评估”。这个问题是特定于Java的,