我在用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))。不删除配置单元表并重新创建它。
先谢谢你。
2条答案
按热度按时间j8ag8udp1#
1或2都不可能。
1:配置单元需要hbase列的显式Map,因此。。不。。如果不更新Map,配置单元将看不到它。
2配置单元“alter table”语法不支持#2。您需要删除并重新创建具有更新Map的配置单元表。
jckbn6z72#
你不能改变
SERDER
外部表的属性。您可以做的是删除表和外部源之间的链接。例如,如果是hbase表,则可以执行以下操作:注意:
MY_HBASE_NOT_EXISTING_TABLE
必须是不存在的表。DROP TABLE MY_HIVE_TABLE;
通过指定新的serde属性重新创建配置单元表