hadoop—配置单元中的列到逗号分隔值

6kkfgxo0  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(383)

对于sql(将多行转换为一行并用逗号作为分隔符)有人问过和回答过,提到的任何一种方法在hive中都有效吗,例如:

+------+------+
| Col1 | Col2 |
+------+------+
| a    | 1    |
| a    | 5    |
| a    | 6    |
| b    | 2    |
| b    | 6    |
+------+------+

对此:

+------+-------+
| Col1 | Col2  |
+------+-------+
| a    | 1,5,6 |
| b    | 2,6   |
+------+-------+
8cdiaqws

8cdiaqws1#

而且有 collect_list 这将采取完整的名单(与副本)。

nbnkbykc

nbnkbykc2#

聚合器函数 collect_set 能达到你想要的目标。这是文件。因此可以编写如下查询:

SELECT Col1, collect_set(Col2)
FROM your_table
GROUP BY Col1;

然而,mysql和 GROUP BY 还有Hive collect_set 那一段时间 GROUP_CONCAT 还保留结果数组中的重复项, collect_set 删除阵列中出现的重复项。在您显示的示例中,没有重复的组值 Col2 所以你可以继续使用它。

kgqe7b3p

kgqe7b3p3#

试试这个

SELECT Col1, concat_ws(',', collect_set(Col2)) as col2
FROM your_table
GROUP BY Col1;

apache.org文档

相关问题