Как удалить дубликаты из строк в текстовом файле через HIVE - PullRequest
0 голосов
/ 14 мая 2018

Я новичок в HQL.Я пытаюсь удалить дубликаты элементов из 2 строк в HIVE.

Текстовый файл содержит следующие две строки:

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

Мне нужно удалить дубликаты из этих 2 строк.Я создал таблицу

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

Затем я загружаю данные в эту таблицу.Теперь я не могу удалить дубликаты из этих двух строк.Можем ли мы удалить дубликаты, если между числами нет пробелов?

1 Ответ

0 голосов
/ 15 мая 2018

Если вы пытаетесь удалить дубликаты номеров, вам нужно будет создать новую таблицу следующим образом

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...