Impala–实战之整合HBASE&JDBC&性能优化(三)

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.HiveDriver
impala.url=jdbc://hive2://hdp01:21050/;auth=noSasl
impala.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输出底层信息计划,再做相应的环境优化

原文 

https://segmentfault.com/a/1190000023069253

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Impala–实战之整合HBASE&JDBC&性能优化(三)

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址