天天看點

impala測試

一、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中新增加的表了

繼續閱讀