gpt4 book ai didi

scala - 交叉联接运行时错误:使用CROSS JOIN语法允许这些关系之间的笛卡尔积

转载 作者:行者123 更新时间:2023-12-04 22:56:12 27 4
gpt4 key购买 nike

我有以下可以编译的功能。

  def compare(dbo: Dataset[Cols], ods: Dataset[Cols]) = {
val j = dbo.crossJoin(ods)
// Tried val j = dbo.joinWith(ods, func.expr("true")) too
j.take(5).foreach(r => println(r))
}


但是提交到Spark时出现运行时错误。

连接条件丢失或无关紧要。 (如果使用joinWith代替crossJoin)
使用CROSS JOIN语法允许这些关系之间的笛卡尔积。
在org.apache.spark.sql.catalyst.optimizer.CheckCartesianProducts $$ anonfun $ apply $ 21.applyOrElse(Optimizer.scala:1067)
在org.apache.spark.sql.catalyst.optimizer.CheckCartesianProducts $$ anonfun $ apply $ 21.applyOrElse(Optimizer.scala:1064)
在org.apache.spark.sql.catalyst.trees.TreeNode $$ anonfun $ 2.apply(TreeNode.scala:268)
在org.apache.spark.sql.catalyst.trees.TreeNode $$ anonfun $ 2.apply(TreeNode.scala:268)
在org.apache.spark.sql.catalyst.trees.CurrentOrigin $ .withOrigin(TreeNode.scala:70)
在org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:267)
在org.apache.spark.sql.catalyst.trees.TreeNode $$ anonfun $ transformDown $ 1.apply(TreeNode.scala:273)
在org.apache.spark.sql.catalyst.trees.TreeNode $$ anonfun $ transformDown $ 1.apply(TreeNode.scala:273)
在org.apache.spark.sql.catalyst.trees.TreeNode $$ anonfun $ 4.apply(TreeNode.scala:307)
在org.apache.spark.sql.catalyst.trees.TreeNode.mapProductIterator(TreeNode.scala:188)
在org.apache.spark.sql.catalyst.trees.TreeNode.mapChildren(TreeNode.scala:305)
在org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:273)
在org.apache.spark.sql.catalyst.trees.TreeNode $$ anonfun $ transformDown $ 1.apply(TreeNode.scala:273)
在org.apache.spark.sql.catalyst.trees.TreeNode $$ anonfun $ transformDown $ 1.apply(TreeNode.scala:273)
在org.apache.spark.sql.catalyst.trees.TreeNode $$ anonfun $ 4.apply(TreeNode.scala:307)
在org.apache.spark.sql.catalyst.trees.TreeNode.mapProductIterator(TreeNode.scala:188)
在org.apache.spark.sql.catalyst.trees.TreeNode.mapChildren(TreeNode.scala:305)
在org.apache.spark.sql.catalyst.trees.TreeNode.transformDown(TreeNode.scala:273)
在org.apache.spark.sql.catalyst.trees.TreeNode.transform(TreeNode.scala:257)
在org.apache.spark.sql.catalyst.optimizer.CheckCartesianProducts.apply(Optimizer.scala:1064)
在org.apache.spark.sql.catalyst.optimizer.CheckCartesianProducts.apply(Optimizer.scala:1049)
在org.apache.spark.sql.catalyst.rules.RuleExecutor $$ anonfun $ execute $ 1 $$ anonfun $ apply $ 1.apply(RuleExecutor.scala:85)
在org.apache.spark.sql.catalyst.rules.RuleExecutor $$ anonfun $ execute $ 1 $$ anonfun $ apply $ 1.apply(RuleExecutor.scala:82)
在scala.collection.IndexedSeqOptimized $ class.foldl(IndexedSeqOptimized.scala:57)
在scala.collection.IndexedSeqOptimized $ class.foldLeft(IndexedSeqOptimized.scala:66)
在scala.collection.mutable.WrappedArray.foldLeft(WrappedArray.scala:35)
在org.apache.spark.sql.catalyst.rules.RuleExecutor $$ anonfun $ execute $ 1.apply(RuleExecutor.scala:82)
在org.apache.spark.sql.catalyst.rules.RuleExecutor $$ anonfun $ execute $ 1.apply(RuleExecutor.scala:74)
在scala.collection.immutable.List.foreach(List.scala:381)
在org.apache.spark.sql.catalyst.rules.RuleExecutor.execute(RuleExecutor.scala:74)
在org.apache.spark.sql.execution.QueryExecution.optimizedPlan $ lzycompute(QueryExecution.scala:78)
在org.apache.spark.sql.execution.QueryExecution.optimizedPlan(QueryExecution.scala:78)
在org.apache.spark.sql.execution.QueryExecution.sparkPlan $ lzycompute(QueryExecution.scala:84)
在org.apache.spark.sql.execution.QueryExecution.sparkPlan(QueryExecution.scala:80)
在org.apache.spark.sql.execution.QueryExecution.executedPlan $ lzycompute(QueryExecution.scala:89)
在org.apache.spark.sql.execution.QueryExecution.executedPlan(QueryExecution.scala:89)
在org.apache.spark.sql.Dataset.withTypedCallback(Dataset.scala:2814)
在org.apache.spark.sql.Dataset.head(Dataset.scala:2127)
在org.apache.spark.sql.Dataset.take(Dataset.scala:2342)
在MappingPoint $ .compare(MappingPoint.scala:43)
在MappingPoint $ .main(MappingPoint.scala:33)
在MappingPoint.main(MappingPoint.scala)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)
在java.lang.reflect.Method.invoke(未知来源)
在org.apache.spark.deploy.SparkSubmit $ .org $ apache $ spark $ deploy $ SparkSubmit $$ runMain(SparkSubmit.scala:743)
在org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1(SparkSubmit.scala:187)
在org.apache.spark.deploy.SparkSubmit $ .submit(SparkSubmit.scala:212)
在org.apache.spark.deploy.SparkSubmit $ .main(SparkSubmit.scala:126)
在org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

最佳答案

我在How to enable Cartesian join in Spark 2.0?中找到了解决方案。

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

关于scala - 交叉联接运行时错误:使用CROSS JOIN语法允许这些关系之间的笛卡尔积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45153477/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com