我看到Databricks问题,但不理解
此处引用Databricks问题:
我有一个使用SQLContext对流数据执行SQL语句的Spark Streams应用程序。当我在Scala中注册自定义UDF时,流应用程序的性能会显着下降。详情如下:
声明1:
选择col1, col2 from table 1 as t1加入table le2 as t2 ont1.foo=t2.bar
声明2:
从表1中选择col1,col2作为t1连接表2作为t2等于(t1.foo,t2.bar)
我使用 SQLContext 注册了一个自定义 UDF,如下所示:
sqlc.udf.register(“equals”, (s1: String, s2:String) =
在相同的输入和Spark配置下,State2的性能比State1明显差(接近100X)。
为什么使用UDF会产生笛卡尔积而不是完全外连接?
使用 UDF 需要笛卡尔积的原因很简单。由于您传递的任意函数可能具有无限域和非确定性行为,因此确定其值的唯一方法是传递参数并求值。这意味着您只需检查所有可能的配对。
另一方面,简单的平等具有可预测的行为。如果您使用< code>t1.foo = t2.bar条件,您可以简单地通过< code>foo和< code>bar分别混洗< code>t1和< code>t2行,以获得预期的结果。
准确地说,在关系代数中,外部连接实际上是用自然连接表示的。除此之外的任何东西都只是一种优化。
任何在笛卡尔积上强制外连接的方法
不尽然,除非你想修改Spark SQL引擎。
问题内容: 我对SQL还是很陌生,并且正在为查询而苦苦挣扎(使用Access,FWIW)。我已经搜索并搜索了StackOverflow,但没有看到这种确切的情况。(这也可能是因为我不知道正确的搜索词。) 我有两个非常简单的表,其中包含相似的数据。 我想要的是在两个表以及该人所在的每个表的网络中找到匹配的每个人/州组合: 此人在每个表中可能位于多个网络中。我想查看此人所属的每个网络(从两个表中)。
问题内容: 我正在编写一个PL / SQL过程,该过程需要动态生成一些查询,其中之一涉及使用来自查询的结果作为参数来创建临时表。 它可以正确编译,但是即使使用非常简单的查询,例如: IT抛出。如果我手动运行创建的查询,它将正确运行。在这一点上,我能够确定是什么导致了问题。 问题答案: 尝试丢掉“;” 从您立即执行的字符串内部。
本文向大家介绍浅谈MySQL使用笛卡尔积原理进行多表查询,包括了浅谈MySQL使用笛卡尔积原理进行多表查询的使用技巧和注意事项,需要的朋友参考一下 MySQL的多表查询(笛卡尔积原理) 先确定数据要用到哪些表。 将多个表先通过笛卡尔积变成一个表。 然后去除不符合逻辑的数据(根据两个表的关系去掉)。 最后当做是一个虚拟表一样来加上条件即可。 注意:列名最好使用表别名来区别。 笛卡尔积 Demo: 左
问题内容: 在Tensorflow中有什么简单的方法可以像itertools.product一样做笛卡尔积吗?我想获得两个张量(和)的元素组合,在Python中可以通过itertools作为。我正在Tensorflow中寻找替代方案。 问题答案: 我将在此假定和均为一维张量。 为了得到两者的笛卡尔积,我会用的组合和: 您使用LEN(一) LEN(B) 2张量,其中的元件的每个组合结束并且在最后一维
问题内容: 我想找到元素集的笛卡尔积。这是一个例子 笛卡尔积是, abc aba acc aca bbc bba bcc bca 笛卡尔积是, zbc ybc xbc 因此,我正在考虑一种在Java中执行的算法,该算法可以在一开始就找到在编译时定义的特定数量组的笛卡尔积。 问题答案: 您可以使用该方法从谷歌的番石榴库生成笛卡尔产品: 如果一切都那么简单!
问题内容: 假设我有一个如下数组: 如何在保留外部关联数组的键并将其用于内部键的同时找到笛卡尔乘积?该算法的结果应为: 我查找了许多笛卡尔乘积算法,但是我对如何保留关联键的细节感到困惑。我正在使用的当前算法仅给出数字索引: 任何帮助,将不胜感激。 问题答案: 这是我不会感到羞耻的解决方案。 基本原理 像您的示例一样,假设我们有一个带有子数组的输入数组。每个子数组都有项目,其中index在里面,键为