Spark SQL 中的数组交集

2024-01-18

我有一个表,其中包含名为的数组类型列writer其值如下array[value1, value2], array[value2, value3].... ETC。

我在做self join获得数组之间具有共同值的结果。我试过:

sqlContext.sql("SELECT R2.writer FROM table R1 JOIN table R2 ON R1.id != R2.id WHERE ARRAY_INTERSECTION(R1.writer, R2.writer)[0] is not null ")

And

sqlContext.sql("SELECT R2.writer FROM table R1 JOIN table R2 ON R1.id != R2.id WHERE ARRAY_INTERSECT(R1.writer, R2.writer)[0] is not null ")

但得到了同样的例外:

线程“main”org.apache.spark.sql.AnalysisException 中出现异常: 未定义的函数:“ARRAY_INTERSECT”。该函数既不是 注册的临时功能或注册的永久功能 数据库“默认”。;第 1 行 位置 80

Spark SQL 可能不支持ARRAY_INTERSECTION and ARRAY_INTERSECT。我怎样才能实现我的目标Spark SQL?


从 Spark 2.4 开始array_intersect https://spark.apache.org/docs/latest/api/sql/index.html#array_intersect函数可以直接在SQL中使用

spark.sql(
  "SELECT array_intersect(array(1, 42), array(42, 3)) AS intersection"
).show()
+------------+
|intersection|
+------------+
|        [42]|
+------------+

and Dataset API:

import org.apache.spark.sql.functions.array_intersect

Seq((Seq(1, 42), Seq(42, 3)))
  .toDF("a", "b")
  .select(array_intersect($"a", $"b") as "intersection")
  .show()
+------------+
|intersection|
+------------+
|        [42]|
+------------+

其他语言中也存在等效函数:

  • pyspark.sql.functions.array_intersect https://spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=array_intersect#pyspark.sql.functions.array_intersect在 PySpark 中。
  • SparkR::array_intersect https://spark.apache.org/docs/latest/api/R/column_collection_functions在 SparkR 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark SQL 中的数组交集 的相关文章

随机推荐

  • PHP读取和解析大文件? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我即将读取一个大小为 200Mb 的
  • MySQL中如何比较两个查询结果是否相等?

    我是 MySQL 用户 我有两个疑问 我想比较他们的结果是否相等 我想用一个返回 true 或 false 的查询来完成此操作 因此我的两个查询很可能采用子查询的形式 我想避免返回两个查询的结果并在应用程序级别比较它们 以减少通信并提高性能
  • 如何在单击时切换两个图像

    我正在制作一个可折叠的树视图 我做到了这一切 我只需要我的 and 每当单击图标时就会进行切换 当我更改图标时我做了这部分 to 单击后 使用 jQuery 并使用以下代码 this attr src images expand gif 问
  • 如何在显示 ABPeoplePickerNavigationController 时指定组

    最初显示时如何指定组ABPeoplePickerNavigationController 所以它不会自动显示 所有联系人 是的 我必须让它发挥作用 将您的班级设置为人员选择器的代表 pp delegate self 然后实施 void na
  • 在 django 日期时间上使用 strftime 会在字符串中生成 UTC 时间

    我的模型之一中有以下代码 def shortDescription self return self name self class date strftime I M self class date是否具有时区意识DateTimeFiel
  • 在 C++ 模板化代码中找不到构造函数[重复]

    这个问题在这里已经有答案了 使用以下命令编译它时出现此错误 g main cpp Vec cpp Wall o main I tmp cciqbEQJ o In function main main cpp text 0x8b undefi
  • 如何以兼容模式运行Java?

    Java支持兼容模式运行吗 换句话说 如果我们在系统上安装了 JDK 8 是否可以将其配置为使用相同的安装在 7 或之前版本上运行我的应用程序 我可以举一个例子 比如 IE 11 可以根据兼容性选项切换为 IE 8 9 或 10 运行 我同
  • 在 C# 中将 double 转换为 int

    在我们的代码中 我们需要将 double 转换为 int double score 8 6 int i1 Convert ToInt32 score int i2 int score 谁能解释一下为什么i1 i2 我得到的结果是 i1 9
  • 为什么? “始终将用户定义的异常声明为最终的”

    我使用 Java 源代码分析器分析了我正在处理的代码 警告之一是 始终将用户定义的异常声明为最终的 还有许多其他警告没有多大意义 但这个警告让我有点困惑 我正在开发一个框架 并且有一个根通用异常 例如 FrameworkGenericExc
  • iOS 推送通知自定义声音重复?

    我正在处理推送通知 我已经为推送通知实现了自定义声音 如果推送通知自定义声音只有 5 秒长 那么我可以重复它直到达到最大声音限制 30 秒 吗 例如 我可以重复播放一个通知的声音 6 次吗 JSON 有效负载是 array alert gt
  • 替代 ClientLogin 进行身份验证

    由于 Google 将 ClientLogin API 列为已弃用 建议的替代方案是什么 就我而言 我需要一台服务器来使用我拥有的凭据进行身份验证和发布内容 OAuth 等替代方案在这种情况下不起作用 根据您的应用场景 认证方式有所不同 报
  • 你能在 Angular 中压缩 get 请求的内容吗?

    我正在使用 Angular 获取一些 JSON 如下所示 http url https www somemachine com getdata method GET params success function data status h
  • 尝试让 main/form1 之外的类相互交互是否是一种不好的形式? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何从 GitHub 构建 R 包?

    我尝试建立R 包的分支 https github com patcpsc rredis来自github 这个fork有一个新的错误修复 https github com bwlewis doRedis issues 10 我能够构建并安装来
  • 使散景的自定义 TapTool 适用于全息视图

    我想使用散景TapTool单击每个 URL 时打开不同的 URLholoviews Polygons 散景中的一个完美示例是散景文档 https docs bokeh org en latest docs user guide intera
  • Python pip包安装elastic-search-curator时出现RequestsDependencyWarning

    我通过以下命令安装了弹性搜索策展人 sudo pip install U elasticsearch curator 一切都安装好了 但是现在当我执行以下操作时 curator cli version 我收到以下依赖性警告 usr loca
  • javax.net.ssl.SSLHandshakeException:没有适当的协议(协议已禁用或密码套件不合适

    我知道有几个关于此错误的问题 但没有任何对我有帮助 我有在 gmail 服务器上发送带有附件的电子邮件的方法 效果很好 昨天我买了一台新的 mac mini m1 我尝试用这种方法发送电子邮件 但它引发了此错误 public static
  • Gson - 将嵌套对象序列化为属性

    有没有一种简单的方法可以将嵌套对象转换为 JSON 我正在尝试创建一个 JSON 对象来匹配后端 我在网络中使用 Retrofit 它使用 Gson 将对象转换为 JSON 我无权访问网络调用和转换之间的任何代码 因此我试图找到一种干净的方
  • 带有自定义项目的 JavaFx 2 ChoiceBox

    我有一堂课 例如 public class myClass int age String name public String toString return name public static ObservableList
  • Spark SQL 中的数组交集

    我有一个表 其中包含名为的数组类型列writer其值如下array value1 value2 array value2 value3 ETC 我在做self join获得数组之间具有共同值的结果 我试过 sqlContext sql SE