-步骤一:创建HBASE表,添加数据
create 'test_info','info'; put 'test_info','1','info:name','similarFish'; put 'test_info','2','info:name','fish';
-步骤二:创建hive表
create external table test_info( key string, name string ) row format serde 'org.apache.hadoop.hive.hbase.HbaseSerDe' stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with serdeproperties("hbase.columns.mapping"="row_key:key,info:name") tblproperties("hbase.table.name"="test_info")
-步骤三:刷新impala表
invalidate metadata
注:本质是hive元数据库建立一张表去映射HBASE数据库的表的元数据,这样impala在和hive共用元数据库时也能读取到这张表,以hive作为跳板去访问hbase
impala.driver=org.apache.hive.jdbc.HiveDriver impala.url=jdbc://hive2://hdp01:21050/;auth=noSasl impala.username= impala.password=
注:尽量使用PreparedStatement执行SQL语句,因为性能上要好于Statement,而且Statement存在查不出数据的情况
1,执行SQL前对SQL进行一个分析,使用explain sql(分析哪个步骤需要内存多,指定机器),profile(为什么这次的SQL执行的这么慢) 2,哪些SQL会导致数据倾斜,保证谓词下推的成功 3,多层嵌套,select * 都是可以优化的
1,避免把整个数据发送到客户端(执行完了直接落地,在本地查看执行结果) 2,尽可能的做条件过滤 3,使用limit字句 4,输出文件时,避免使用美化输出