编辑Map配置单元/hbase

w46czmvw  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(295)

我在用hbase和hive。所以我在hbase中创建了一个表:

Create 'tableHbase' 'd'

然后像这样创建我的配置单元表:

CREATE EXTERNAL TABLE IF NOT EXISTS hbaseTable_hive(key String, c1 string, c2 string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,d:c1,d:c2")TBLPROPERTIES ("hbase.table.name" = "hbaseTable");

但现在我想知道,如果可能的话:
1-在hbase(d:c3)中添加新列时,无法在配置单元中显示c3的值。是否有可能在不编辑或重新创建配置单元表的情况下在配置单元中看到它。
2-编辑此Map(以添加新列,例如(c3 string))。不删除配置单元表并重新创建它。
先谢谢你。

j8ag8udp

j8ag8udp1#

1或2都不可能。

1:配置单元需要hbase列的显式Map,因此。。不。。如果不更新Map,配置单元将看不到它。

2配置单元“alter table”语法不支持#2。您需要删除并重新创建具有更新Map的配置单元表。

jckbn6z7

jckbn6z72#

你不能改变 SERDER 外部表的属性。您可以做的是删除表和外部源之间的链接。例如,如果是hbase表,则可以执行以下操作:

ALTER TABLE MY_HIVE_TABLE SET TBLPROPERTIES('hbase.table.name'='MY_HBASE_NOT_EXISTING_TABLE')`

注意: MY_HBASE_NOT_EXISTING_TABLE 必须是不存在的表。 DROP TABLE MY_HIVE_TABLE; 通过指定新的serde属性重新创建配置单元表

CREATE EXTERNAL TABLE MY_HIVE_TABLE(
MY_colums
)
ROW FORMAT SERDE 
  '...' 
WITH SERDEPROPERTIES (...)
TBLPROPERTIES (
    'hbase.table.name'='z_app_qos_hbase_temp:MY_HBASE_GOOD_TABLE'
);

相关问题