检查 arraytype 列是否包含 null

2024-04-04

我有一个数据框,其中有一列可以包含整数值的数组类型。如果没有值,它将只包含一个,并且它将是空值

重要的:注意该列不会为空,而是一个具有单个值的数组;无效的

> val df: DataFrame  = Seq(("foo", Seq(Some(2), Some(3))), ("bar", Seq(None))).toDF("k", "v")
df: org.apache.spark.sql.DataFrame = [k: string, v: array<int>]
> df.show()
+---+------+
|  k|     v|
+---+------+
|foo|[2, 3]|
|bar|[null]|

Question:我想获取具有空值的行。


到目前为止我已经尝试过:

> df.filter(array_contains(df("v"), 2)).show()
+---+------+
|  k|     v|
+---+------+
|foo|[2, 3]|
+---+------+

对于null,它似乎不起作用

> df.filter(array_contains(df("v"), null)).show()

org.apache.spark.sql.AnalysisException:无法解析 '数组包含(v, NULL)' 由于数据类型不匹配:空类型 值不能用作参数;

or

> df.filter(array_contains(df("v"), None)).show()

java.lang.RuntimeException:不支持的文字类型类 scala.None$ 没有任何


无法使用array_contains在这种情况下,因为 SQLNULL无法进行平等比较。

您可以使用udf像这样:

val contains_null = udf((xs: Seq[Integer]) => xs.contains(null))

df.where(contains_null($"v")).show

// +---+------+
// |  k|     v|
// +---+------+
// |bar|[null]|
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 arraytype 列是否包含 null 的相关文章

随机推荐

  • 为什么我在具有完全有效语法的行中收到“SyntaxError:无效语法”?

    这是代码行 guess Pmin Pmax Pmin 1 w 2 fi1 w 2 fi2 Pmin Pmax w fi1 and fi2此时都已经被赋予了有限值 那么为什么会出现错误呢 当我从代码中删除该行时 同样的错误出现在下一行代码中
  • 如何在 WPF 中的 StreamGeometry 中绘制完整的椭圆?

    中唯一的方法是StreamGeometryContext似乎与椭圆相关的是ArcTo方法 不幸的是 它主要用于连接线条而不是绘制椭圆 特别地 圆弧的位置由起点和终点确定 对于完整的椭圆 两者显然重合 并且确切的方向变得不确定 到目前为止 我
  • 如何允许数组具有强参数

    我有一个功能正常的 Rails 3 应用程序 它使用 has many through 关联 但它不是 因为我将其重新制作为 Rails 4 应用程序 让我可以保存 Rails 4 版本中关联模型的 id 这三个相关模型对于两个版本来说是相
  • 在 MS Visual C++ 中启用 VLA(可变长度数组)?

    如何启用 VLA C99 中定义的可变长度数组 MS Visual C 中的使用 或者根本不可能 是的 我知道 C 标准基于 C89 并且 VLA 在 C89 标准中不可用 因此在 C 中不可用 但 MSVC 也应该是 C 编译器 可以使用
  • Knockout无法识别手动点击

    这是样本http jsfiddle net HhXGH 57 http jsfiddle net HhXGH 57 我正在通过 jquery 单击单选按钮 但 knockout js 无法识别它 它仍然显示第一个单击的值 p Send me
  • PDO 存储过程返回值

    我正在使用返回错误代码的 SQL Server 存储过程 这是 SP 的一个非常简单的片段 DECLARE ret int BEGIN SET ret 1 RETURN ret END 我可以使用 mssql 扩展获取返回值 mssql b
  • 用于将十进制转换为任意基数(从 2 到 36)的 C 代码

    我最近刚刚开始学习 C 我写了一个非常短的程序 可以在十进制和二进制之间进行转换 我想尝试编写一个在十进制和任何基数 最多 36 位 之间转换的代码 然而 我的代码只是打印出垃圾 include
  • 如何使用聚合物提交表格?

    我有这个聚合物接触元件
  • Android Html.fromHtml 耗时太长

    如果我该怎么办tv setText Html fromHtml text 时间太长 UI 挂起 如果我可以用线程来做 你能提供一个例子吗 private Handler mHandler new Handler void handleMes
  • 使用 System.IO.File 辅助方法的“顺序”文件 I/O 安全吗?

    我刚刚看到这个问题 在 C 中的 File 类上使用静态方法安全吗 https stackoverflow com q 32413634 1207195 总结一下OP有一个IOException因为该 ASP NET 代码片段中正在使用文件
  • Freetts 无法使用外部扬声器

    我在我的 java 应用程序中使用了 Freetts jar 文件来公布令牌编号 我的应用程序在我的笔记本电脑中运行良好 但在具有外部扬声器的台式机中无法运行 我得到一个空指针异常 注意 我的两台计算机都使用 Windows 7 下面的代码
  • PHP DOMDocument saveHTML 未正确编码西里尔字母

    I use DOMDocument操作 html 和 php 7 问题是文本在页面上显示良好 西里尔文 但是当我转到 查看 HTML 页面源代码 时 情况不太好 它显示如下 1047 1076 1077 1089 1100 1086 108
  • jQuery 提交 ajax 表单,带有 2 个提交按钮

    我试图实现以下目标 在 php 中我有一个这样的表单
  • 我可以将自定义对象发送到 Android Wear 吗?

    我刚刚学习如何为 Android Wear 进行开发 我已经为智能手表创建了一个全屏活动 在应用程序的移动部分中 我获取了一些 JSON 数据并从中创建了自定义对象列表 在我的移动应用程序上 我在 ListView 中显示这些对象的信息 在
  • 在 Rust 中将原始指针转换为 16 位 Unicode 字符到文件路径

    我正在用 Rust 编写的 DLL 替换用 C 编写的 DLL 目前DLL中的函数调用如下 BOOL calledFunction wchar t pFileName 我相信在这样的背景下wchar t是一个 16 位 Unicode 字符
  • 是否可以在Azure中运行npx工具来执行包

    是否可以运行npx工具来执行Azure App服务 Web应用程序 中的包 我在用 节点 v10 19 0 npm v6 13 4 如果我在本地计算机上浏览到 nodejs 我可以看到 npx cmd 工具 但如果我在 azure 中执行相
  • Textmate for Ruby 自动完成?

    我真的很习惯 Netbeans 的自动完成功能 在 Netbeans 中 当我键入 字符串 然后点击 点 时 它将打印出 String 类的方法列表 TextMate好像没有这个功能 您可以添加什么吗 会节省很多时间 而不是一直使用 ri
  • 在列表视图上方添加图像

    我想在列表视图上方添加图像视图 我知道在列表视图中添加部分听者 但我只是想节省时间 所以我使用图像视图作为列表视图标题 而不是使用 addSectionHeader 不幸的是我只是坚持使用一些 xml 属性 图像叠加在我的列表视图中 实际上
  • 我正在尝试获取 Apple Music API 的用户令牌,我已经从 python 终端命令生成了有效的开发人员令牌

    我正在我的 IOS 应用程序中第一次使用 Apple Music api 我已经在 python 命令的帮助下生成了开发者令牌 每次请求用户令牌时 我都会收到错误 请求用户令牌时发生错误 操作无法完成 SKErrorDomain 错误 7
  • 检查 arraytype 列是否包含 null

    我有一个数据框 其中有一列可以包含整数值的数组类型 如果没有值 它将只包含一个 并且它将是空值 重要的 注意该列不会为空 而是一个具有单个值的数组 无效的 gt val df DataFrame Seq foo Seq Some 2 Som