2016-04-12 31 views
1

私はImpalaで新しく、テーブルからレコードを削除する方法を理解しようとしています... 削除コマンドを探してみましたが、わかりやすい手順が見つかりませんでした...テーブル名から削除するCloudera Impala

これは私のテーブル構造である:

create table Installs (BrandID INT, PublisherID INT, InstallDate STRING, HourNum INT, Country STRING, Installs INT) PARTITIONED BY (day INT, month INT, year INT) STORED AS PARQUET 

は、Hadoopの中で、削除は可能ですか? 構文はどのように機能しますか? すべてのヘルプ私にとって大きな助けになる...ありがとう:)

答えて

2

は本から参照してください - learning-cloudera-impala

インパラは、テーブルの行を削除するか、削除をサポートしていません。代わりに、表をドロップするか、または必要なデータを他の表に移行し、元の表全体を削除します。

他のデータベースシステムでUPDATEまたはDELETEステートメントの効果をシミュレートするには、通常、INSERTまたはCREATE TABLE AS SELECTを使用して、あるテーブルから別のテーブルにデータをコピーしたり、コピー操作中に適切な行をフィルタリングまたは変更したりします。

work around

+0

ありがとうございますが、私はHiveとは動作しません。私はCloudera Impalaと協力しています。 – Bramat

+0

@Bramat Kishoreの答えは、具体的にはImpalaについてのものであり、正しいものです。予期せず、文書化されていない動作で、Impalaの使用を開始したときに私たちのチームを混乱させました。 –

1

短い答え:いいえ、DELETEは、イン​​パラではサポートされていません。この問題を回避するには、そこにないデータを削除したいテーブルデータを書き換えます。

Cloudera ImpalaはSQLをサポートし、データウェアハウスのワークロードに使用できますが、従来のRDBMSと似ていません。 Hiveと同様に、HDFSにファイルを保存します(またHiveと多くの点で相互運用可能です)。非常に大きなファイルをブロックに格納するように設計されています。

したがって、それが依存するHDFSのように、データを効果的に削除するようには設計されていません。

関連する問題