对从 JSON 创建的数据框应用过滤条件

2024-01-06

我正在处理由 JSON 创建的数据帧,然后我想在数据帧上应用过滤条件。

val jsonStr = """{ "metadata": [{ "key": 84896, "value": 54 },{ "key": 1234, "value": 12 }]}"""
val rdd = sc.parallelize(Seq(jsonStr))
val df = sqlContext.read.json(rdd)

df 的模式

root
 |-- metadata: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- key: long (nullable = true)
 |    |    |-- value: long (nullable = true)

现在我需要过滤我想要做的数据框

val df1=df.where("key == 84896")

这会引发错误

ERROR Executor - Exception in task 0.0 in stage 1.0 (TID 1)
org.apache.spark.sql.AnalysisException: cannot resolve '`key`' given input columns: [metadata]; line 1 pos 0;
'Filter ('key = 84896)

我想使用where子句的原因是因为我想直接使用表达式字符串 例如( (key == 999, value == 55) || (key == 1234, value == 12) )


首先你应该使用explode获得易于使用的数据帧。然后您可以选择给定输入的键和值:

val explodedDF = df.withColumn("metadata", explode($"metadata"))
  .select("metadata.key", "metadata.value")

Output:

+-----+-----+
|  key|value|
+-----+-----+
|84896|   54|
| 1234|   12|
+-----+-----+

这样您就可以像往常一样执行过滤逻辑:

scala> explodedDF.where("key == 84896").show
+-----+-----+
|  key|value|
+-----+-----+
|84896|   54|
+-----+-----+

您可以串联您的过滤要求,下面是一些示例:

explodedDF.where("key == 84896 AND value == 54")
explodedDF.where("(key == 84896 AND value == 54) OR key = 1234")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对从 JSON 创建的数据框应用过滤条件 的相关文章

随机推荐

  • Python 导入、路径、目录和模块

    首先我要说的是 我在过去的一周里做了广泛的研究 但还没有找到这些问题的实际答案 只是一些模糊的答案 并不能真正解释正在发生的事情 如果这只是因为我错过了我想要的东西 我很抱歉 请为我指出正确的方向 我的目录结构是 TestProject r
  • Spring Boot Web 应用程序错误:在名称为“dispatcherServlet”的 DispatcherServlet 中未找到带有 URI [/] 的 HTTP 请求的映射

    我检查了有关此警告的其他问题 但没有人工作 IDE Spring工具套件3 9 4 Java Oracle Java 8 当我尝试打开网页时显示错误页面 尝试本地主机 8080 https i stack imgur com FkoUo j
  • 主要 JavaScript 数据结构

    我即将参加面试 公司的核心技术之一是 JavaScript 有人告诉我 下一次面试将重点讨论 JS 数据结构 这个术语在我的任何教育中都从未出现过 我在谷歌上花了一段时间试图找到更多关于它们的信息 我能遇到的最好的事情是这个维基百科页面 h
  • PHP:open_basedir 允许的路径

    我有几个电话要打给is dir在一页上 他们一直工作没有问题 几天前 托管公司将PHP从5 2升级到5 3 从那时起 我所有的电话is dir导致以下错误 消息 Warning is dir open basedir restriction
  • OpenCV中是掩码按位与运算

    我从 python 中的 opencv 开始 我有一个关于如何应用 mask 的问题 bitwise and src1 src2 mask mask 以下哪一项描述了实现 A 全部按位 先屏蔽 src1 与掩码进行 与 运算 src2 与
  • Spring安全为所有角色名称添加了前缀“ROLE_”?

    我的网络安全配置中有以下代码 Override protected void configure HttpSecurity http throws Exception http authorizeRequests antMatchers a
  • FxCop 安装

    我正在尝试获取最新版本的 FxCop 我使用的是 Visual Studio 2010 Professional 版本 它不包含代码分析 因此我尝试使用 FxCop 进行设置 At http www microsoft com en us
  • 如何从 Python 3.10 反编译 .pyc 文件?

    我确实尝试过 uncompyle6 decompyl3 等 但它们都不适用于 3 10 现在是否有可能做到这一点 使用pycdc GitHub https github com zrax pycdc https github com zra
  • 在 Windows 上运行 MySQL 或 MariaDB 服务器的最少文件 - (便携式 MySQL/MariaDB)

    我正在寻找 MariaDB 或 MySQL 运行所需的最少文件 而无需像便携式服务器一样安装它 我更喜欢 MariaDB 而不是 MySQL 我想将它嵌入到用 Delphi 编写的软件中 我的软件将能够根据需要启动和停止服务器 我用谷歌搜索
  • Nivo 滑块:第一次显示时第一张图像缩放不成比例

    我在 div 中使用 Nivo Slider jQuery 插件 该 div 的尺寸比我正在显示的图像小 当滑块滑动到第二个图像时 图像上的图像会正确缩小 但是 当第一次显示第一个图像时 加载页面后立即 它仅在宽度上缩放 而在高度上不缩放
  • 如何重新映射 python 字典键

    我正在开发一个程序 该程序 除其他外 读取 CSV 文件 它以以下形式存储为字典数组 col1 data1a col2 data2a col1 data1b col2 data2b 对于每一行 作为其他处理的一部分 我需要将这些键重新映射到
  • 更改 UITableView 的节页眉/页脚标题而不重新加载整个表视图

    有没有办法在不调用的情况下重新加载表视图的节页眉 页脚 tableView reloadData 事实上 我想在表视图的部分页脚中显示表格视图部分中的单元格数量 表视图是可编辑的 我使用删除或插入行 insertRowsAtIndexPat
  • Android:将 PNG ByteArray 写入文件

    我已将图像文件读入 ByteArray 但如何将其写回 我的意思是将 ByteArray 保存到文件系统中的图像文件 首选 PNG 格式 我的代码从 PNG 文件到 ByteArray ByteArrayOutputStream strea
  • 使用 Quartz 跨多个无状态应用程序服务器调度单个作业

    我在负载均衡器后面有一层相同的应用程序服务器 出于操作原因 我有一个限制 即两个应用程序服务器上的应用程序配置必须相同 以便可以轻松添加和删除节点 所有应用程序服务器共享相同的数据库 应用程序服务器不会 不会集群 到目前为止 这一切都运行良
  • 在片段中初始化字体

    我有这一行 Typeface font Typeface createFromAsset getAssets fonts Delius Regular ttf but the getAssets 参数似乎带来了一些错误 它带有可怕的红线下划
  • 为什么我们要在 YARN 中配置 mapred.job.tracker?

    据我所知 YARN 被引入并取代了 JobTracker 和 TaskTracker 我看过一些Hadoop 2 6 0 2 7 0安装教程 他们正在配置mapreduce framework name作为纱线和mapred job tra
  • 在运行时调整 char[] 的大小

    我需要调整大小char array size to char array new size 在运行时 我怎样才能做到这一点 如果您正在使用std vector
  • ASP.NET MVC 3:具有继承/多态性的 DefaultModelBinder

    首先 对这篇大文章 我尝试先做一些研究 以及针对同一问题的技术组合 ASP NET MVC 3 Ninject 和 MvcContrib 表示歉意 我正在使用 ASP NET MVC 3 开发一个项目来处理一些客户订单 简而言之 我有一些继
  • 有没有办法生成 DOCX 文件的缩略图?

    我已经使用像 ASPOSE 这样的 付费 工具完成了这项工作 但我很好奇是否有任何开源工具可以做到这一点 我确信可能有工具可以做到这一点 但如果您可以将文件转换为可以轻松光栅化的格式 那么可能值得探索 例如 将工作文档转换为 pdf 然后对
  • 对从 JSON 创建的数据框应用过滤条件

    我正在处理由 JSON 创建的数据帧 然后我想在数据帧上应用过滤条件 val jsonStr metadata key 84896 value 54 key 1234 value 12 val rdd sc parallelize Seq