如何通过HIVE从txt文件中的行中删除重复项

时间:2018-05-14 16:46:44

标签: hadoop hive

我是HQL的新手。我试图从HIVE中删除2行中的重复元素。

文本文件包含以下两行:

1 2 3 4 4 5 5 7 1 8 2 4 6 2
8 2 3 7 5 2 3 4 1 2 6 8 7 2

我需要从这两行中删除重复项。我创建了一个表

CREATE TABLE remove_dup
(
elements STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '/n';

然后我将数据加载到此表中。现在我无法从这两行中删除重复项。 当数字之间没有空格时,我们还可以删除重复项吗?

1 个答案:

答案 0 :(得分:0)

如果您尝试删除重复的数字,则需要创建一个新表格,如下所示

CREATE TABLE remove_duplicates
(
elements STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '/n';

使用正则表达式将数据从一个表插入到另一个表中以删除重复项。如果您的数字由空格分隔并保持第一次出现(如果您希望保留最后一次从查询中移除reverse),则以下正则表达式有效

insert overwrite table remove_duplicates
select
 regexp_replace
    (
        rever(elements)
       ,'(?<=^| )(?<word>.*?) (?=.*(?<= )\\k<word>(?= |$))'
       ,''
    );
from
remove_dup;

它将创建一个新文件(或文件,具体取决于您的数据大小和您的配置单元配置)删除重复项。您可以查找运行该命令的文件位置以检查表位置

describe formatted remove_duplicates;