Wie kann ich eine Partition nach dem Hinzufügen zu einer externen Tabelle in Hive aktualisieren / löschen?
75
Sie können eine Hive-Partition aktualisieren, indem Sie beispielsweise:
ALTER TABLE logs PARTITION(year = 2012, month = 12, day = 18)
SET LOCATION 'hdfs://user/darcy/logs/2012/12/18';
Dieser Befehl verschiebt weder die alten Daten noch löscht er die alten Daten. Es setzt einfach die Partition auf den neuen Speicherort.
Sie können eine Partition löschen
ALTER TABLE logs DROP IF EXISTS PARTITION(year = 2012, month = 12, day = 18);
Ich hoffe es hilft!
use <schema>
zuerst ausführen , da dies sonst fehlschlägt,FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Unable to alter partition. Unable to alter partitions because table or database does not exist.
selbst wenn die Tabelle vorhanden ist. Wenn der Tabellenname lautet<schema>.<table>
, müssen Sie über die CLIuse <schema>
zuerst ausgeführt werden, bevor Sie den Partitionsspeicherort ändern.Darüber hinaus können Sie mehrere Partitionen aus einer Anweisung löschen ( Löschen mehrerer Partitionen in Impala / Hive ).
Auszug aus dem obigen Link:
EDIT 1:
Sie können Bulk auch mithilfe eines Bedingungszeichens (>, <, <>) löschen, zum Beispiel:
quelle
Sie können entweder Dateien in den Ordner kopieren, in dem sich die externe Partition befindet, oder sie verwenden
INSERT OVERWRITE TABLE tablename1 PARTITION (partcol1=val1, partcol2=val2...)...
Erklärung.
quelle
Möglicherweise müssen Sie auch die Datenbank mit der Tabelle aktivieren
Andernfalls wird möglicherweise eine Fehlermeldung angezeigt (auch wenn Sie die Datenbank dh dbname.table angeben).
quelle
spark.sql()
, die jeweils nur einen Befehl unterstützt (undspark.sql("use <schema>")
gefolgt vonspark.sql("alter table ...")
funktioniert, funktioniert nicht, insbesondere in Fällen, in denen Sie ein Partitionsformat ändern möchten, das beim Hinzufügen nicht zulässig ist Teilung.Alter table table_name drop partition (partition_name);
quelle