相关疑难解决方法(0)

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

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

apache-spark google-cloud-dataproc

9
推荐指数
2
解决办法
8449
查看次数

使用非等号键自定义连接

我需要实现一个自定义连接策略,它将匹配非严格相等的键.为了说明,可以考虑距离:当键足够接近时应该进行连接(尽管在我的情况下,它比仅仅距离度量更复杂)

所以我不能通过重写equals来实现它,因为没有相等性(我需要为其他需求保持真正的相等性测试).我想我还需要实现一个合适的分区器.

我怎么能这样做?

join apache-spark

5
推荐指数
1
解决办法
2818
查看次数

为什么在SQL查询中使用UDF会导致笛卡尔积?

我看到了Databricks-Question并且不明白

  1. 为什么使用UDF导致笛卡尔积而不是完全外连接?显然,笛卡尔积将比完整外连接(联接是一个例子)更多行,这是潜在的性能损失.
  2. Databricks-Question中给出的示例中,是否有任何强制外部连接超过笛卡尔积的方法?

在这里引用Databricks-Question:

我有一个Spark Streaming应用程序,它使用SQLContext在流数据上执行SQL语句.当我在Scala中注册自定义UDF时,流应用程序的性能显着下降.详情如下:

声明1:

Select col1, col2 from table1 as t1 join table2 as t2 on t1.foo = t2.bar

声明2:

Select col1, col2 from table1 as t1 join table2 as t2 on equals(t1.foo,t2.bar)

我使用SQLContext注册自定义UDF,如下所示:

sqlc.udf.register("equals", (s1: String, s2:String) => s1 == s2)

在相同的输入和Spark配置上,与Statement1相比,Statement2的性能明显更差(接近100倍).

sql apache-spark apache-spark-sql

1
推荐指数
1
解决办法
1052
查看次数