如何删除单元格 Hive 表中的重复值
Posted
技术标签:
【中文标题】如何删除单元格 Hive 表中的重复值【英文标题】:how to remove duplicate value in a cell Hive table 【发布时间】:2021-05-06 09:10:05 【问题描述】:我的 Hive SQL 表中有一个列,其中每个单元格的值用逗号 (,) 分隔。此字符串中的某些值是重复的,我想删除它们。这是我的数据示例:
test, test1, test,test1
rest,rest1,rest1,rest
chest,nest,lest,gest
结果应替换所有重复项:
test,test1
rest,rest1
chest,nest,lest,gest
我想删除重复项。谁能帮我解决这个问题?
谢谢
【问题讨论】:
黑斑羚还是蜂巢?它们非常不同 在 Hive 中会更理想。谢谢。 谢谢。此解决方案有效。 如果可行,请接受/投票 【参考方案1】:Hive 解决方案。 拆分获取数组,分解,使用collect_set获取不重复的数组,使用concat_ws连接数组。
演示(Hive):
with your_table as(
select stack(3,
1, 'test, test1, test,test1',
2, 'rest,rest1,rest1,rest',
3, 'chest,nest,lest,gest'
) as (id, colname)
)
select t.id, t.colname, concat_ws(',',collect_set(trim(e.elem))) result
from your_table t
lateral view outer explode(split(colname,',')) e as elem
group by t.id, t.colname
trim() 用于删除数据示例中存在的空格。
结果:
t.id t.colname result
1 test, test1, test,test1 test,test1
2 rest,rest1,rest1,rest rest,rest1
3 chest,nest,lest,gest chest,nest,lest,gest
【讨论】:
以上是关于如何删除单元格 Hive 表中的重复值的主要内容,如果未能解决你的问题,请参考以下文章