Hive 相对于同一表中的其他数组列对数组列进行排序

2023-12-08

我在 hive 有一个表,有 2 列col1 array<int> and col2 array<double>。输出如下图

col1                col2
[1,2,3,4,5]         [0.43,0.01,0.45,0.22,0.001]

我想按升序对这个 col2 进行排序,并且 col1 也应该相应地更改其索引,例如

col1                col2
[5,2,4,3,1]        [0.001,0.01,0.22,0.43,0.45]

分解两个数组,排序,然后再次聚合数组。使用sort在之前的子查询中collect_list对数组进行排序:

with your_data as(
select array(1,2,3,4,5) as col1,array(0.43,0.01,0.45,0.22,0.001)as col2
)

select original_col1,original_col2, collect_list(c1_x) as new_col1, collect_list(c2_x) as new_col2
from
(
select d.col1 as original_col1,d.col2 as original_col2, c1.x as c1_x, c2.x as c2_x, c1.i as c1_i  
 from your_data d
      lateral view posexplode(col1) c1 as i,x
      lateral view posexplode(col2) c2 as i,x
where c1.i=c2.i 
distribute by original_col1,original_col2
sort by c2_x
)s
group by original_col1,original_col2;

Result:

OK
original_col1   original_col2                   new_col1        new_col2
[1,2,3,4,5]     [0.43,0.01,0.45,0.22,0.001]     [5,2,4,1,3]     [0.001,0.01,0.22,0.43,0.45]
Time taken: 34.642 seconds, Fetched: 1 row(s)

编辑:同一脚本的简化版本,您可以不用第二个poseexplode,使用按位置直接引用d.col2[c1.i] as c2_x

with your_data as(
select array(1,2,3,4,5) as col1,array(0.43,0.01,0.45,0.22,0.001)as col2
)

select original_col1,original_col2, collect_list(c1_x) as new_col1, collect_list(c2_x) as new_col2
from
(
select d.col1 as original_col1,d.col2 as original_col2, c1.x as c1_x, d.col2[c1.i] as c2_x, c1.i as c1_i  
 from your_data d
      lateral view posexplode(col1) c1 as i,x
distribute by original_col1,original_col2
sort by c2_x
)s
group by original_col1,original_col2;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hive 相对于同一表中的其他数组列对数组列进行排序 的相关文章

  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 如何从 PostgreSQL 中的时间戳列值提取一天中的时间(或小时)?

    我正在尝试从 PostgreSQL 中的 时间戳 列中提取一天中的时间 这是我的做法 但是 太糟糕了 知道如何做得更好吗 SELECT date part hour date demande text hours date part min
  • Hadoop 作业:任务在 601 秒内无法报告状态

    在伪节点上运行 hadoop 作业时 任务失败并被杀死 错误 任务尝试 在 601 秒内无法报告状态 但同一个程序正在通过 Eclipse 运行 本地作业 任务 大约有 25K 个关键字 输出将是所有可能的组合 一次两个 即大约 25K 2
  • 确定数组的大小(如果传递给函数)

    如果将数组传递给另一个函数 未传递大小 是否可以确定数组的大小 数组的初始化类似于 int array XXX 我知道不可能执行 sizeof 因为它会返回指针的大小 我问的原因是因为我需要在传递数组的另一个函数内运行 for 循环 我尝试
  • 使用 ADODB 连接从关闭的工作簿中检索数据。某些数据被跳过?

    我目前正在编写一些代码 可以通过 ADODB 连接访问单独的工作簿 由于速度的原因 我选择了这种方法而不是其他方法 下面是我的代码 Sub GetWorksheetData strSourceFile As String strSQL As
  • 如何在单击事件时向数组添加值

    我想要实现的是读取单击事件的值并将其保存到数组中 我的代码 a href class hotel Add to favourites a var hotelName hotel on click function e e preventDe
  • 初级SQL部分:避免重复表达式

    我对 SQL 完全陌生 但我们可以说StackExchange 数据浏览器 https data stackexchange com 我只想按信誉列出前 15 位用户 我写了这样的内容 SELECT TOP 15 DisplayName I
  • SELECT 语句会受到 SQL 注入攻击吗?

    实际上有2个问题 我知道我必须尽可能多地使用存储过程 但我想知道以下内容 A 我可以从 SELECT 语句 例如 Select from MyTable 获得 SQL 注入攻击吗 B 另外 当我在 ASP NET 中使用 SQLDataSo
  • 内连接不重复,可以吗?

    鉴于这两个表 表 A1 有两行具有相同的值 a A1 a a 表 A2 有两行主键值为 A B 它们与 a 关联 A2 PK col2 A a B a 我想要的是 A1 和 A2 的连接并得到这个结果 a A a B 显然内连接在这里不起作
  • 为表中的每个组选择前 N 行

    我面临一个非常常见的问题 即 为表中的每个组选择前 N 行 考虑一个表id name hair colour score列 我想要一个结果集 对于每种头发颜色 都能得到前 3 名得分手的名字 为了解决这个问题 我得到了我所需要的Rick O
  • “实际或正式的参数列表长度不同”

    当我尝试将某些内容放入 括号中时Friends f new Friends friendsName friendsAge 它出现错误 Friends 类中的构造函数 Friends 不能应用于给定类型 必需 无参数 发现 字符串 整数 原因
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 删除近排序数组中未排序/离群元素

    给定一个像这样的数组 15 14 12 3 10 4 2 1 我如何确定哪些元素乱序并删除它们 在本例中为数字 3 我不想对列表进行排序 而是检测异常值并将其删除 另一个例子 13 12 4 9 8 6 7 3 2 我希望能够删除 4 和
  • 使用间隔阈值对不同的连续时间戳记录进行分组

    我有一系列间歇性间隔的带有时间戳的 GPS 坐标 我正在使用 PostGIS 将它们渲染到地图画布上 为了渲染它们 需要使用 PostGIS 中的 ST MakeLine 聚合函数将点聚合成线 从而在地图上留下 GPS 数据丢失的间隙 数据
  • 如何使用 LAMBDA 表达式在 LINQ 中执行 IN 或 CONTAINS?

    我有以下 Transact Sql 我正在尝试将其转换为 LINQ 并且很挣扎 SELECT FROM Project WHERE Project ProjectId IN SELECT ProjectId FROM ProjectMemb
  • 如何在hadoop mapreduce/yarn中设置VCORES?

    以下是我的配置 mapred site xml map mb 4096 opts Xmx3072m reduce mb 8192 opts Xmx6144m yarn site xml resource memory mb 40GB min
  • SQL Server 上的语法错误

    这可能是一个愚蠢的语法错误 但我只是继续阅读我的程序 但我无法弄清楚我的错误在哪里 消息 156 第 15 级 状态 1 第 41 行关键字附近的语法不正确 为了 这是我的代码 alter procedure LockReservation
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换
  • 索引数量越少意味着插入、更新和删除速度更快? [关闭]

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

随机推荐

  • 令牌字符映射到 Ngram 过滤器 ElasticSearch NEST

    我正在尝试使用 NEST 复制以下映射 但在将标记字符映射到标记生成器时遇到问题 settings analysis filter nGram filter type nGram min gram 2 max gram 20 token c
  • Facebook Feed Dialog 返回未处理的 JavaScript,包括导致 iOS 应用程序崩溃的 post_id

    我尝试使用 Facebook 的 Feed Dialog 根据 Facebook 开发者网页上的示例 我编写了两个类我的应用程序模型类 and 我的视图控制 见下文 编译运行没有错误或警告 iOS 应用程序仅在第一次运行时挂起 当我打电话时
  • 如何在 MATLAB 中保存带有封闭框区域的绘图?

    保存绘图时 如何关闭顶部和右侧带有黑线的绘图区域 我不知道如何制作或如何搜索 如果有人知道请告诉我 例如 请看下面所示的图 其中缺少线条 在保存图像之前 请使用box命令 这会将您的绘图包围起来 使其周围有黑框 如您在示例图像中指定的那样
  • 防止直接访问 Node & Express 应用程序中的目录

    在我的 Express 应用程序中 我在 public 中有一个名为 media 的目录 我想限制对其 及其子目录 的访问 重定向或显示 404 我怎样才能实现它 提前致谢 如果你定义了public文件夹中express static像这样
  • 防止对覆盖层后面的元素进行 Tab 键操作

    我正在使用键盘 Tab 键 Shift Tab 键 在整个网页上进行 Tab 键切换 一切都运行良好且顺利 此外 当我继续按 Tab 键时 焦点会循环浏览所有元素 地址栏 元素 返回地址栏等 现在在某些情况下 我的内容之上有一个模式和一个透
  • 为什么 () => void 返回一些东西?

    我知道下面并不意味着返回 类型 为空 我的理解是 voidFunc 不返回任何内容 因为它返回 void 为什么它返回任何类型 type voidFunc gt void const myFunc voidFunc gt return he
  • Getopts 不带破折号地标记错误选项

    Getopt Long Configure no pass through my opts GetOptions opts opt1 s opt2 s opt3 test pl bad option without dash 当传递一个不带
  • SAX 解析“&”字符[重复]

    这个问题在这里已经有答案了 当我尝试解析 char 时 我在 SAX 解析中遇到问题 所有其他特殊字符都会在 SAX 解析器中自动解析 但我在 字符中遇到问题 有人请给我建议吗 首先 我将来自 Web 服务的 XML 保存到一个字符串中 并
  • Angular 2:在引导之前调用服务

    当引导我的 Angular 2 v2 4 时 我尝试运行一个函数 该函数将在应用程序加载之前自动授权用户 然而 这似乎不起作用 import platformBrowserDynamic from angular platform brow
  • 让docker使用IPv4进行端口绑定

    我有 docker 主机 里面有一个容器 docker 主机仅在 IPv6 接口上绑定端口 而不在 IPv4 上绑定端口 这是输出 tcp 0 0 0 0 0 0 22 0 0 0 0 LISTEN tcp 0 0 0 0 0 0 5508
  • 使用 PHP 处理退回邮件?

    这是我的场景 我有 2 个电子邮件帐户 电子邮件受保护 and 电子邮件受保护 我想向我的所有用户发送电子邮件 电子邮件受保护 但然后 回复 电子邮件受保护 到目前为止 我的 PHP 脚本可以处理它 当邮件无法发送时 会发送至 电子邮件受保
  • Android 保存的图像质量低

    我通过下面的代码拍照并保存到 SD 卡 但它生成的图片质量很低 即使是 100 质量 也非常小 也许 bitmap compress 不是正确的方法 或者根本不是位图 这是我的代码 public class TakePhoto extend
  • 为什么在这个绝对的程序中没有显示积极的条款

    让我们从这个演示开始 include
  • java+Swing:矩形或其他“精灵”的高效叠加

    我不太确定如何表达这一点 所以请耐心等待 我有两个JPanels 在一个容器中JPanel与OverlayLayout Both JPanel容器中的 s 覆盖paint Graphics 底端JPanel是不透明的并且绘制了一些相当复杂的
  • TextBlock 的默认高度是多少?

    在 Silverlight 和 WPF 中 TextBlock 是否有默认高度 如果有 它是什么
  • CMake 未检测到 GCC 包含标头(使用“-include”)更改

    我观察到奇怪的 CMake 行为 如果我的项目有一个头文件包含到所有源使用 include inc h借助于ADD COMPILE OPTIONS include inc h 然后命令更改为从未检测到的标头 这意味着我可以更改标头 但 CM
  • 使用 OpenCV 中的轮廓点从源图像创建图像?

    我必须在图像中找到正方形 然后创建检测到的正方形的单独图像 到目前为止 我能够检测到正方形并根据四个点获取其轮廓 Problem 当我使用 ROI 创建图像时 我也得到了不存在正方形的背景 我想删除该区域并只想保留与正方形相关的区域 你想用
  • 清理 MySQL 用户参数

    What are the dangerous characters that should be replaced in user input when the users input will be inserted in a MySQL
  • 使用脚本格式化 googlesheet 单元格中的文本

    我有一个谷歌工作表 它在单元格中格式化了文本 有些文字有颜色并且是粗体的 我使用谷歌脚本在单元格中添加新内容 当我运行脚本时 会添加新内容 但会删除旧内容的格式 1 如何在执行脚本时保留旧内容的格式 2 我想让新内容变得粗体和彩色 如何格式
  • Hive 相对于同一表中的其他数组列对数组列进行排序

    我在 hive 有一个表 有 2 列col1 array