2016-05-07 3 views
0

В улье, как я могу удалить повторяющиеся записи? Ниже мой случай,Улей удалить повторяющиеся записи

Во-первых, я загружаю данные из таблицы продуктов в файл products_rcfileformat. Есть 25 строк записей на столе продукта

FROM products INSERT OVERWRITE TABLE products_rcfileformat   
SELECT *; 

Во-вторых, я загружаю данные из таблицы продуктов в products_rcfileformat. В таблице продуктов имеется 25 строк записей. Но на этот раз я не использую пункт

FROM products INSERT INTO TABLE products_rcfileformat   
SELECT *; 

OVERWRITE Когда я запрашиваю данные, которые он дал мне общее число строк = 50, которые являются правильными

enter image description here

Проверить от HDFS, это, кажется, HDFS сделать еще копия файла xxx_copy_1 вместо добавления к 000000_0

enter image description here

Теперь я хочу, чтобы удалить эти записи, Ри d из xxx_copy_1. Как я могу достичь этого в команде улья? Если я не ошибаюсь, я могу удалить файл xxx_copy_1, используя команду hdfs dfs -rm, следуя команде reerun insert overrite. Но я хочу знать, можно ли это сделать, используя пример команды hive, например, оператор delete?

ответ

0

Проверить от HDFS, это, кажется, HDFS сделать еще одну копию файла xxx_copy_1 вместо добавления к 000000_0

Причина в том, HDFS только для чтения, не редактируемые, как файлы хранилища хранилища (или все, что может быть местом), которое все еще находится в hdf, поэтому он должен создать второй файл.

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

Пожалуйста, отметьте это сообщение - Removing DUPLICATE rows in hive based on columns.

Дайте мне знать, если вас устраивает ответ. У меня есть другой метод, который удаляет повторяющиеся записи, но может быть не так, как вы хотите.

+0

Спасибо за ответ. Ссылка, которую вы предлагаете, выглядит нормально, и я попробую ее позже. Могу ли я узнать, что другой метод, упомянутый в вашем посте? – user664481

1

Разделите свои данные так, чтобы строки (используйте функцию окна row_number), которые вы хотите удалить, находятся в разделе для себя. Затем вы можете удалить раздел, не затрагивая остальную часть вашей таблицы. Это довольно устойчивая модель, даже если ваш набор данных становится довольно большим.

подробно о разделе.

www.tutorialspoint.com/hive/hive_partitioning.htm