Impala相关基础知识

Impala相关基础知识

1. Impala简介

    Impala是由Cloudera公司推出,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。Impala基于Hive,提供内存计算,已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。

2. Impala的优点

    一般来说,Impala可以替代Hive进行快速的查询,Impala的优点如下:

  1. 基于内存运算,不需要把中间结果写入磁盘,省掉了大量的I/O开销
  2. Impala完全抛弃了MapReduce这个不太适合做SQL查询的范式,省掉了MapReduce作业启动的开销,直接访问存储在HDFS/HBase中的数据进行作业调度,速度快。
  3. 尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销
  4. 可以访问hive的metastore,对hive数据直接做数据分析

3. Impala的缺点

  1. 对内存的依赖大,且完全依赖于hive
  2. 实践中,分区超过1万,性能严重下降
  3. 每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新,资源不不能通过YARN统⼀资源管理理调度,所以Hadoop集群⽆无法实现Impala、Spark、Hive等组件的动态资源共享

4. Impala与Hive的联系

  • Hive: 复杂的批处理理查询任务,数据转换任务,对实时性要求不高同时数据量量又很大的场景。
  • Impala:实时数据分析,与Hive配合使用,对Hive的结果数据集进行实时分析。impala不不能完全取代hive,impala可以直接处理hive表中的数据。
  • Hive对于原数据的更新操作不能被Impala感知到。
  • Impala对原数据的更新操作可以被Hive感知到。

5. Hive与Impala数据类型

Hive数据类型Impala数据类型长度
TINYINTTINYINT1byte有符号整数
SMALINTSMALINT2byte有符号整数
INTINT4byte有符号整数
BIGINTBIGINT8byte有符号整数
BOOLEANBOOLEAN布尔类型,true或者false
FLOATFLOAT单精度浮点数
DOUBLEDOUBLE双精度浮点数
STRINGSTRING字符系列。可以指定字符集。可以使用单引号或者双引号
TIMESTAMPTIMESTAMP时间类型
BINARY不支持字节数组

6. 使用Impala操作数据

    使用Scala语言来进行Impala的相关操作。

/*
* 需要在resources添加spark相关配置文件
*/
object ImpalaTest {

  var jdbcTemplate: JdbcTemplate = null
  var dataSource: ComboPooledDataSource = null
  // driverName
  private val driverClass: String = "com.cloudera.impala.jdbc41.Driver"
  // jdbc连接url
  private val defaultConnectUrl: String = "jdbc:impala://192.168.60.201:21050/ods_frtfd;AuthMech=3;UID=admin;PWD=admin;UseSasl=0";
  private val minPoolSize: Int = 3
  private val acquireIncrement: Int = 5
  private val maxPoolSize: Int = 20
  private val checkoutTimeout: Int = 180000



  def main(args: Array[String]): Unit = {
    jdbcTemplate = new JdbcTemplate();
    dataSource = new ComboPooledDataSource();
    dataSource.setDriverClass(driverClass)
    dataSource.setJdbcUrl(defaultConnectUrl)
    dataSource.setMinPoolSize(minPoolSize)
    dataSource.setMaxPoolSize(maxPoolSize)
    dataSource.setAcquireIncrement(acquireIncrement)
    dataSource.setCheckoutTimeout(checkoutTimeout)
    jdbcTemplate.setDataSource(dataSource)

    val sql: String = "select * from ods_frtfd.ods_ind_doc where date_ymd = '2021-11-03'"
    // 查询Hive中的数据
    val list: util.List[OdsIndDoc] = jdbcTemplate.query(sql, new BeanPropertyRowMapper[OdsIndDoc](classOf[OdsIndDoc]))
    println(list.toString)
  }

}

参考链接

https://baike.baidu.com/item/Impala/7458017?fr=aladdin
https://www.cnblogs.com/dw-date/p/13891071.html
https://blog.csdn.net/weixin_45586042/article/details/107752404
https://www.cnblogs.com/dw-date/p/13891071.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值