2015-01-15 21 views

risposta

44

Per rinominare una tabella in HBase, apparentemente è necessario utilizzare le istantanee. Quindi, fai un'istantanea del tavolo e poi clonalo come un nome diverso.

Nella shell HBase:

disable 'tableName' 
snapshot 'tableName', 'tableSnapshot' 
clone_snapshot 'tableSnapshot', 'newTableName' 
delete_snapshot 'tableSnapshot' 
drop 'tableName' 

SOURCE

http://hbase.apache.org/book.html#table.rename

+0

Posso cadere la tabella di origine dopo l'assunzione di snapshot e prima di clonare snapshot per nuova tabella? Sembra funzionare. O i loro rischi sono collegati ad esso? –

+0

Nessun rischio che io conosca. L'istantanea e la tabella sono solo indicatori dei dati, motivo per cui l'istantanea è quasi istantanea. Inoltre, si dovrebbe notare che se si desidera che i dati vengano riorganizzati sul disco (HBase per eseguire il più buono possibile), è necessario eliminare l'istantanea quando si è fatto con esso. – WattsInABox

+0

Questo metodo funziona bene. Sei curioso di sapere se hai mai provato questo metodo su un tavolo molto grande? Dovrò rinominare una grande tabella HBase e non voglio che il tempo di 'disable' sia molto lungo per la vecchia tabella poiché la nostra pipeline di produzione continuerà a leggere la vecchia tabella prima di passare completamente al nuovo nome della tabella. Grazie! – yuan0122

Problemi correlati