impala测试

来源:互联网 发布:超次元矩阵好人卡 编辑:程序博客网 时间:2024/06/05 19:12
一、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中新增加的表了
0 0
原创粉丝点击