在 hive 中连接之前排序字符串

Posted

技术标签:

【中文标题】在 hive 中连接之前排序字符串【英文标题】:ordering string before concatenation in hive 【发布时间】:2016-06-03 04:24:54 【问题描述】:

我们在一个表中有 3 列。 ID、时间戳和 cmets。一个 ID 可以关联多个 cmets。我们需要根据时间戳以 desc 格式选取前三个 cmets,这是我们使用 Rank() 函数完成的。下一个要求是将这 3 个顶部 cmets 与具有管道分离的 ID 连接起来。我们使用 concat_ws 来实现这一点。但是,我们看到这些 cmets 没有与时间戳的 desc 顺序连接。它们随机连接。

有没有办法在不使用自定义 udf 的情况下将 desc 时间戳顺序的串联顺序相同?

【问题讨论】:

能否请您发布您当前使用的查询? 【参考方案1】:

使用row_number() over (partition by id order by timestamp desc) 并为每个 id 的前三个 cmets 指定一个数字。然后根据您之前提供的 rno 编写查询以连接 cmets。

【讨论】:

以上是关于在 hive 中连接之前排序字符串的主要内容,如果未能解决你的问题,请参考以下文章

在 Hive 和 Presto 中按分组聚合字符串并按顺序排序

Hive,按数组中的项目连接 2 个表

Flutter 中 Hive 框中的记录过滤和排序

我们可以在查询之前对Hive表的列进行排序吗?

在 Hive 中使用分隔符连接多行

通过 Hive 或 Impala 或 Pig 中的字符串匹配连接表