我是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';
然后我将数据加载到此表中。现在我无法从这两行中删除重复项。 当数字之间没有空格时,我们还可以删除重复项吗?
答案 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;