Impala实战之整合HBASEJDBC性能优化三

Impala与HBase整合impala可以通过Hive外部表的方式和Hbase进行整合-步骤一:创建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 JDBC配置impala.driver=org.apache.hive.jdbc.HiveDriverimpala.url=jdbc://hive2://hdp01:21050/;auth=noSaslimpala.username=impala.password=注:尽量使用PreparedStatement执行SQL语句,因为性能上要好于Statement,而且Statement存在查不出数据的情况 Impala性能优化SQL优化,使用之前调用执行计划1,执行SQL前对SQL进行一个分析,使用explain sql(分析哪个步骤需要内存多,指定机器),profile(为什么这次的SQL执行的这么慢)2,哪些SQL会导致数据倾斜,保证谓词下推的成功3,多层嵌套,select * 都是可以优化的选择合适的文件格式进行存储避免产生很多小文件,少用insert,如果有其他程序产生的小文件,可以使用中间表使用合适的分区技术,根据分区粒度测算使用compute stats进行表信息搜集网络IO的优化: 1,避免把整个数据发送到客户端(执行完了直接落地,在本地查看执行结果) 2,尽可能的做条件过滤 3,使用limit字句 4,输出文件时,避免使用美化输出使用profile输出底层信息计划,再做相应的环境优化

July 1, 2020 · 1 min · jiezi