天天看點

客快物流大資料項目(七十七):使用Impala對kudu更改表屬性操作

客快物流大資料項目(七十七):使用Impala對kudu更改表屬性操作

文字目錄

​​使用Impala對kudu更改表屬性操作​​

​​一、重命名Impala映射表​​

​​二、重新命名内部表的基礎Kudu表​​

​​三、将外部表重新映射到不同的Kudu表​​

​​四、更改Kudu Master位址​​

​​五、将内部管理的表更改為外部​​

使用Impala對kudu更改表屬性操作

開發人員可以通過更改表的屬性來更改 Impala 與給定 Kudu 表相關的中繼資料。這些屬性包括表名, Kudu 主位址清單,以及表是否由 Impala (内部)或外部管理。

一、重命名Impala映射表

ALTER TABLE PERSON RENAME TO person_temp;      
客快物流大資料項目(七十七):使用Impala對kudu更改表屬性操作
客快物流大資料項目(七十七):使用Impala對kudu更改表屬性操作

重命名impala表的時候,隻會修改impala表的名字,不會修改kudu表名的名字,如果想修改kudu表名的話,需要使用impala3.3及以上版本

二、重新命名内部表的基礎Kudu表

  • 建立内部表:
CREATE TABLE kudu_student
(
    CompanyId INT,
    WorkId INT,
    Name STRING,
    Gender STRING,
    Photo STRING,
    PRIMARY KEY(CompanyId)
    )
    PARTITION BY HASH PARTITIONS 16
    STORED AS KUDU
    TBLPROPERTIES (
    'kudu.num_tablet_replicas' = '1'
);      
  • 如果表是内部表,則可以通過更改kudu.table_name屬性重命名底層的Kudu表
ALTER TABLE kudu_student SET TBLPROPERTIES('kudu.table_name' = 'new_student');      
客快物流大資料項目(七十七):使用Impala對kudu更改表屬性操作
客快物流大資料項目(七十七):使用Impala對kudu更改表屬性操作
注意:kudu.table_name屬性的設定與版本有關
在impala3.2版本中是無法修改底層的kudu表的名字的,從impala3.3開始可以修改
在Impala 2.11及更低版本中,可以通過更改kudu.table_name屬性來重命名基礎Kudu表:
結論:在impala2.11及impala3.2之間的版本是無法修改kudu.table_name屬性的

三、将外部表重新映射到不同的Kudu表

  • 如果使用者在使用過程中發現其他應用程式重新命名了kudu表,那麼此時的外部表需要重新映射到kudu上

建立一個外部表:

CREATE EXTERNAL TABLE external_table
    STORED AS KUDU
    TBLPROPERTIES (
    'kudu.master_addresses' = 'node2:7051',
    'kudu.table_name' = 'person'
);      

重新映射外部表,指向不同的kudu表:

ALTER TABLE external_table
SET TBLPROPERTIES('kudu.table_name' = 'hashTable')      

四、更改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');      
  • 📢停下休息的時候不要忘了别人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活✨

繼續閱讀