2017-03-06 3 views
0

Verwendung von hbase-client v. 1.1.2.Was ist die empfohlene Methode zum Ändern des Tabellennamens in einem HTableDescriptor?

Die HTableDescriptor API bietet 2 öffentliche Konstrukteuren:

public HTableDescriptor(final TableName name) {... 
    ... 
    public HTableDescriptor(final HTableDescriptor desc) {... 

Und 2 veraltete Methoden zum Ändern des Tabellennamen:

@Deprecated 
    public HTableDescriptor setName(byte[] name) { 
    setName(TableName.valueOf(name)); 
    return this; 
    } 

    @Deprecated 
    public HTableDescriptor setName(TableName name) { 
    this.name = name; 
    setMetaFlags(this.name); 
    return this; 
    } 

ohne Kommentare über das, was der Benutzer stattdessen tun sollte.

So klonen ein HTableDescriptor, Optionen sind (a) mit dem ersten ctor und kopieren Sie alle Felder über Hand oder (b) verwenden Sie den zweiten Ctor und verwenden Sie einfach die veraltete Methode, um den Tabellennamen zu ändern.

Was ist der empfohlene Weg, dies zu tun? Warum scheint die API den Namen nicht direkt zu ändern, außer über ctor?

Antwort

0

Es scheint, Sie suchen this:

/** 
    * Construct a table descriptor by cloning the descriptor passed as a parameter 
    * but using a different table name. 
    * <p> 
    * Makes a deep copy of the supplied descriptor. 
    * Can make a modifiable descriptor from an UnmodifyableHTableDescriptor. 
    * @param name Table name. 
    * @param desc The descriptor. 
    */ 
public HTableDescriptor(final TableName name, final HTableDescriptor desc) { 
+0

Leider habe ich 1,12 bin mit, die diese Ctor nicht aus irgendeinem Grund enthalten. – jordanpg

+0

@jordanpg Nun, wenn Sie sich den github-Code anschauen, werden Sie sehen, dass sogar im veralteten Modus des Master-Zweigs die einzige Möglichkeit ist, den Tabellennamen zu ändern. – AdamSkywalker

Verwandte Themen