一、hdfs上的txt檔案資料導入impala表中進行查詢
1.1在impala建立表
create table impala_hive_table(rank_id stirng,bank_id string,bank_name string,area_id double,bank_type double);
或者是在hive建立表
create table impala_hive_table(rank_id stirng,bank_id string,bank_name string,area_id double,bank_type double);
1.2在impala中load data txt檔案資料到建立好的表中
load data inpath '/bank_data.txt' into table tn;
或者是在hive中load data txt檔案資料到建立好的表中
load data inpath '/bank_data.txt' into table tn;
做好這兩步,hdfs上的txt檔案資料就導入了impala表中,然後可以用SQL語句對表的資料做查詢
二、在impala中實作對hive表資料的查詢
因為impala和hive共享中繼資料,是以它們中的表和表的資料也都是共享的,在impala中查詢表的資料,也就是查詢的hive中對應表的資料
三、在impala中實作對hbase表資料的查詢
3.1在hbase中建立表
create 'bank1','info'
3.2在hive中建立外部表
create external table bank1(rbank_id string,bank_id string,bank_name string,area_id double,bank_type double)
row format serde 'org.apache.hadoop.hive.hbase.HBaseSerDe'
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties ("hbase.columns.mapping" = ":key,info:bank_id,info:bank_name,info:area_id,info:bank_type")
tblproperties("hbase.table.name" = "bank1");
或者是省去3.1和3.2直接在hive中建立hbase識别的表
create table bank1(rbank_id string,bank_id string,bank_name string,area_id double,bank_type double)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties ("hbase.columns.mapping" = ":key,info:bank_id,info:bank_name,info:area_id,info:bank_type")
tblproperties("hbase.table.name" = "bank1");
3.3在impala中同步中繼資料
impala共享hive的Metastore,這時需要同步中繼資料,可以通過在impala shell中執行同步指令:
invalidate metadata;
然後就可以在impala中檢視到hbase表的資料
問題:1.在impala中建立一張表,然後在hive中删除這張表,再回到impala中依然可以show檢視到這張表,但是對該表查詢操作會報錯
2.hive中新增加的表,在impala中不能show檢視到這張表
解決辦法:先确認impala的每個執行個體中/etc/impala/conf目錄下有沒有hadoop和hive的配置檔案(core-site-xml,hdfs-site-xml,hive-site-xml),沒有的話把這三個配置檔案拷貝到/etc/impala/conf目錄下,重新啟動impala,在impala-shell中輸入invalidate metadata指令,再show就可以檢視到hive中新增加的表了