5.HBase与Hive进行表关联


create external table ods_personas.ods_hbase_train(
    id string,
    userid string,
    eventid string,
    invited string,
    times string,
    interested string,
    not_interested string
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties("hbase.columns.mapping" = ":key,base:user_id,base:event_id,base:invited,base:timestamp,base:interested,base:not_interested")
tblproperties("hbase.table.name" = "exp:hbase_train")

   如果HBase已经有表,可以通过关联映射到Hive上,此时在hive上只能建外部表来关联,即可映射相应HBase表中数据;

   如果HBase和Hive中都没有表的存在,在Hive建表,HBase中也会对应生成表,此时如果在Hive端用load方法导入数据,HBase端无数据,因为load读的是txt文件,而HBase需要Hfile格式;所以使用insert方式插入,而且此时数据真正存储在HBase中。

  生产环境中常用HBase来存储大量数据,且通过HBase的rowkey机制进行去重,然后再用Hive来映射,并在Hive端做数据分析和清理。