2016-05-07 26 views
0

ハイブで重複レコードを削除するにはどうすればよいですか?以下は私のケースですハイブ重複レコードを削除する

まず、製品テーブルからproducts_rcfileformatにデータを読み込みます。商品テーブルには25行のレコードがあります

FROM products INSERT OVERWRITE TABLE products_rcfileformat   
SELECT *; 

第2に、商品表からproducts_rcfileformatにデータを読み込みます。商品表には25行のレコードがあります。しかし、今回は私がデータを照会するとき、それは私にHDFSから

enter image description here

チェック正しい合計行= 50を与えるOVERWRITE句

FROM products INSERT INTO TABLE products_rcfileformat   
SELECT *; 

を使用していないよ、HDFSは別のものを作るように見えます000000_0

enter image description here

に追加ファイルxxx_copy_1のコピーの代わりに、今、私はそのレアそれらのレコードを削除したいですxxx_copy_1のd。ハイブコマンドでこれをどのように達成できますか?私が間違っていなければ、hdfs dfs -rmコマンドを使ってxxx_copy_1ファイルを削除することができます。しかし、私はそれが削除ステートメントのようなハイブコマンドの例を使用して行うことができるかどうかを知りたいですか?

答えて

0

チェック、理由がHDFSである000000_0

にHDFSの代わりにAPPENDのファイルxxx_copy_1 の別のコピーを作成するように見えますまだhdfsにあるハイブウェアハウスファイル(または場所が何でもよい)として編集可能ではなく読み込み専用であるため、2番目のファイルを作成する必要があります。

ここで、xxx_copy_1から読み取ったレコードを削除します。どうすれば ハイブコマンドでこれを達成できますか?

Removing DUPLICATE rows in hive based on columnsを確認してください。

あなたがその答えに満足すれば教えてください。私は重複したエントリを削除する別の方法がありますが、あなたが望む方法ではないかもしれません。

+0

お返事ありがとうございます。あなたが提供するリンクは大丈夫と思われ、後で試してみます。あなたの投稿に記載されている他の方法は何か分かりますか? – user664481

1

削除する行(ウィンドウ関数row_numberを使用)がパーティション内にあるようにデータを分割します。その後、残りのテーブルに影響を与えずにパーティションを削除できます。データセットがかなり大きくなっても、これはかなり持続可能なモデルです。

詳細については、パーティション。 HDFSから

www.tutorialspoint.com/hive/hive_partitioning.htm

関連する問題