開發人員可以通過更改表的屬性來更改 Impala 與給定 Kudu 表相關的元數據。這些屬性包括表名, Kudu 主地址列表,以及表是否由 Impala (內部)或外部管理。
Rename an Impala Mapping Table ( 重命名 Impala 映射表 )
ALTER TABLE kudu_PERSON RENAME TO my_new_table;
注意: 使用 ALTER TABLE ... RENAME語句重命名表僅重命名 Impala 映射表,無論該表是內部還是外部表。這樣可以避免可能訪問基礎的 Kudu 表的其他應用程序的中斷。
CREATE TABLE kudu_PERSON ( CompanyId INT, WorkId INT, Name STRING, Gender STRING, Photo STRING, PRIMARY KEY(CompanyId) ) PARTITION BY HASH PARTITIONS 16 STORED AS KUDU TBLPROPERTIES ( 'kudu.master_addresses' = 'hadoop01:7051,hadoop02:7051,hadoop03:7051', 'kudu.table_name' = 'PERSON' );
如果表是內部表,則可以通過更改 kudu.table_name 屬性重命名底層的 Kudu 表
ALTER TABLE kudu_person SET TBLPROPERTIES('kudu.table_name' = 'new_name');
如果用戶在使用過程中發現其他應用程序重新命名了kudu表,那么此時的外部表需要重新映射到kudu上
創建一個外部表:
CREATE EXTERNAL TABLE external_table STORED AS KUDU TBLPROPERTIES ( 'kudu.master_addresses' = 'hadoop01:7051,hadoop02:7051,hadoop03:7051', 'kudu.table_name' = 'PERSON' );
重新映射外部表,指向不同的kudu表:
ALTER TABLE external_table
SET TBLPROPERTIES('kudu.table_name' = 'hashTable')
上面的操作是:將external_table映射的PERSON表重新指向hashTable表
Change the Kudu Master Address ( 更改 Kudu Master 地址 )
ALTER TABLE my_table
SET TBLPROPERTIES('kudu.master_addresses' = 'kudu-new-master.example.com:7051');
ALTER TABLE my_table SET TBLPROPERTIES('EXTERNAL' = 'TRUE');