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 相对于同一表中的其他数组列对数组列进行排序 的相关文章

  • 在 MS Access SQL 查询中从正常日期转换为 unix 纪元日期

    我正在尝试编写一个通过 ODBC 连接到 MySQL 数据库的 MS Access 2007 连接的查询 一切工作正常 查询执行我想要的操作 我挂断的部分是我一直在询问用户 unix 纪元时间 而不是常规日期 我查找了 MS Access
  • 将 numpy 代码点数组与字符串相互转换

    我有一个很长的 unicode 字符串 alphabet range 0x0FFF mystr join chr random choice alphabet for in range 100 mystr re sub W mystr 我想
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组
  • C# 创建数组的数组

    我正在尝试创建一个将使用重复数据的数组数组 如下所示 int list1 new int 4 1 2 3 4 int list2 new int 4 5 6 7 8 int list3 new int 4 1 3 2 1 int list4
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 分组和切换列和行

    我不知道这是否会被正式称为枢轴 但我想要的结果是这样的 Alex Charley Liza 213 345 1 23 111 5 42 52 2 323 5 23 1 324 5 我的输入数据采用这种形式 Apt Name
  • 泛型、数组和 ClassCastException

    我想这里一定发生了一些我不知道的微妙事情 考虑以下 public class Foo
  • 以编程方式插入行(父行和子行)

    我正在使用 Spring 和 JDBCTemplate 该场景是 CUSTOMER 表和 ORDERS 表的父子关系 我想做一个插入 例如 1 个客户和 5 个订单 但我不确定如何以编程方式在 CUSTOMER 表中插入一行 如何获取 Or
  • 需要 SQL 查询澄清[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个由以下列组成的表 billid patientid doctorid fees 如何显示治疗多名患者的医生 尝试了以下代码并得到了
  • 非 hdfs 文件系统上的 hadoop/yarn 和任务并行化

    我已经实例化了 Hadoop 2 4 1 集群 并且发现运行 MapReduce 应用程序的并行化方式会有所不同 具体取决于输入数据所在的文件系统类型 使用 HDFS MapReduce 作业将生成足够的容器 以最大限度地利用所有可用内存
  • 如何从嵌套的对象数组中获取每个父级的值

    所以我有多个对象数组 每个对象都包含一个子对象 e g const data id 1 name parent 1 children id c1 name child 1 children id g1 name grand 1 childr
  • 将 NumPy 数组按元素映射到更多维度的数组

    我想要地图anumpy array从 NxM 到 NxMx3 其中三个元素的向量是原始条目的函数 lambda x f1 x f2 x f3 x 然而 像这样的事情numpy vectorize不允许改变尺寸 当然 我可以创建一个零数组并进
  • 如何将SQL数据加载到Hortonworks中?

    我已在我的电脑中安装了 Hortonworks SandBox 还尝试使用 CSV 文件 并以表结构的方式获取它 这是可以的 Hive Hadoop nw 我想将当前的 SQL 数据库迁移到沙箱 MS SQL 2008 r2 中 我将如何做
  • Postgres JSONB:数组数组的 where 子句

    postgres 中有 v 9 5 如果有的话 create table json test id varchar NOT NULL data jsonb NOT NULL PRIMARY KEY id 其中 data 是 json 并且包
  • 更好地理解 SQL Server 中的架构

    就像标题一样 我还是一个SQLServer菜鸟 当我创建表 Mytable 时 数据库中显示 dbo Mytable 但有人能让我更好地理解模式吗 另外 在 Server 2008 TSQL 一书中 Itzik 说 在你的数据库中 表属于模
  • Oracle SQL 函数中可以有 commit 语句吗

    在 SQL 函数中使用 COMMIT 语句是否可能 有意义 从技术上来说 答案是肯定的 你can请执行下列操作 create or replace function committest return number as begin upd
  • 将 Excel 范围转换为 VBA 字符串

    我想将给定范围内的值转换为 VBA 字符串 其中原始单元格值由任何选定的列分隔符和行分隔符分隔 分隔符可以是一个字符或更长的字符串 行分隔符是行末尾的字符串 该字符串应该像我们从左上角 从左到右 到右下角读取文本一样完成 以下是范围 A1
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • WHERE NOT EXIST 附近的语法错误

    我在堆栈中搜索 但没有一个达到最终答案 我的查询是这样的 INSERT INTO user username frequence autoSend VALUES feri2 3 1 WHERE NOT EXISTS SELECT FROM
  • 获取mysql中逗号分隔行中不同值的计数

    一个表 Jobs 有 2 列 JobId 城市 当我们保存工作时 工作位置可能是多个城市 如下所示 JobId City 1 New York 2 New York Ohio Virginia 3 New York Virginia 我如何

随机推荐

  • 令牌字符映射到 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