2016-04-12 18 views
1

Ich bin neu auf Impala, und ich versuche zu verstehen, wie Datensätze aus einer Tabelle zu löschen ... Ich habe versucht, nach Löschbefehlen suchen, aber nicht ganz verständlich Anweisungen finden ...DELETE FROM Tabellenname Cloudera Impala

Dies ist meine Tabellenstruktur:

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 

ist Löschen möglich in Hadoop? Wie funktioniert die Syntax? Jede Hilfe eine große Hilfe für mich sein würde ... Danke :)

Antwort

2

aus Buch beziehen - learning-cloudera-impala

Impala unterstützt nicht fallen zu lassen oder eine Zeile in einer Tabelle zu löschen. Die Alternative besteht darin, entweder die Tabelle zu löschen oder die erforderlichen Daten in andere Tabellen zu migrieren und dann die gesamte ursprüngliche Tabelle zu löschen.

Um die Auswirkungen einer UPDATE- oder DELETE-Anweisung in anderen Datenbanksystemen zu simulieren, verwenden Sie normalerweise INSERT oder CREATE TABLE AS SELECT, um Daten von einer Tabelle in eine andere zu kopieren und die entsprechenden Zeilen während des Kopiervorgangs herauszufiltern oder zu ändern.

work around

+0

Danke, aber ich arbeite nicht mit Hive, ich arbeite mit Cloudera Impala ... – Bramat

+0

@Bramat Kishore Antwort ist speziell über Impala, und ist richtig. Es ist unerwartetes und schlecht dokumentiertes Verhalten und verwirrte unser Team, als wir anfingen, Impala zu benutzen. –

1

Kurze Antwort: Nein, DELETE ist nicht in Impala unterstützt. Die Problemumgehung besteht darin, Tabellendaten mit den zu löschenden Daten neu zu schreiben, die nicht darin enthalten sind.

Cloudera Impala unterstützt zwar SQL und kann für Data-Warehouse-Workloads verwendet werden, ist jedoch nicht wie ein herkömmliches RDBMS. Wie Hive speichert es seine Dateien in HDFS (und ist in vielerlei Hinsicht mit Hive interoperabel) und ist daher dafür ausgelegt, sehr große Dateien in Blöcken zu speichern.

Daher ist es, wie das HDFS, auf das es ankommt, nicht dafür ausgelegt, Daten effektiv zu löschen.