大数据——Impala工具使用

大数据——Impala工具使用一 Impala 概述 Impala 是 Cloudera 公司推出 提供对 HDFS Hbase 数据的高性能 低延迟的交互式 SQL 查询功能 基于 Hive 使用内存计算 兼顾数据仓库 具有实时 批处理 多并发等优点与 ApacheHive 有相同的元数据 SQL 语法 ODBC 驱动 用户界面 能直接对存储在 HDFS 和 HBase 中的数据提供快速 交互式 SQL 查询是 CDH 平台首选的 PB 级大数据实时查询分析引擎二 Impala 优点熟悉的 SQL 接口 能够在 ApacheHadoop 中查询大量数据 集群环境

目录

一、Impala概述

二、Impala优点

三、Impala和Hive

3.1 Impala和Hive的关系

3.2 Impala和Hive的区别

五、Impala查询过程

六、Impala安装

七、impala-shell命令

八、数据库语句

数据库命令

数据表命令

视图操作

Impala数据导入

        刷新Impala数据

九、Java API


一、Impala概述

Impala是Cloudera公司推出,提供对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能。

基于Hive使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点

  • 与Apache Hive有相同的元数据、SQL语法、ODBC驱动、用户界面
  • 能直接对存储在HDFS和HBase中的数据提供快速、交互式SQL查询

是CDH平台首选的PB级大数据实时查询分析引擎

二、Impala优点

  1. 熟悉的SQL接口
  2. 能够在Apache Hadoop中查询大量数据
  3. 集群环境中的分布式查询,以方便扩展和使用成本低廉的商品硬件
  4. 能够在不同的组件之间共享数据文件,没有复制或导出/导入步骤
  5. 用于大数据处理和分析的单一系统

三、Impala和Hive

3.1 Impala和Hive的关系

  1. 基于Hive的大数据分析查询引擎
  2. 使用Hive的元数据
  3. 兼容Hive的绝大部分语法

3.2 Impala和Hive的区别

Impala使用独立引擎,而不是MapReduce计算框架

优化技术

  • 使用LLVM产生运行代码
  • 利用可用的硬件指令
  • 选择合适的数据存储格式
  • 最大使用内存,中间结果不写磁盘

将执行计划表现为一颗完整的执行计划树

数据流采用拉数据的方式

使用simple-scheduler调度器进行调度

不进行容错处理,发生错误时直接返回

Hive适用于长时间的批处理查询分析,而Impala适用于实时交互式查询

Impala是Cloudera在受到Google的Dremel启发下开发的实时交互SQL大数据查询工具(实时SQL查询引擎Impala),Impala没有再使用缓慢的Hive+MapReduce批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分组成),可以直接从HDFS或HBase中用SELECT、JOIN和统计函数查询数据,从而大大降低了延迟。

大数据——Impala工具使用

五、Impala查询过程

Impala主要由Impalad, State Store和CLI组成。

Impalad: 与DataNode运行在同一节点上,由Impalad进程表示,它接收客户端的查询请求(接收查询请求的Impalad为Coordinator,Coordinator通过JNI调用java前端解释SQL查询语句,生成查询计划树,再通过调度器把执行计划分发给具有相应数据的其它Impalad进行执行),读写数据,并行执行查询,并把结果通过网络流式的传送回给Coordinator,由Coordinator返回给客户端。同时Impalad也与State Store保持连接,用于确定哪个Impalad是健康和可以接受新的工作。

在Impalad中启动三个ThriftServer: beeswax_server(连接客户端),hs2_server(借用Hive元数据), be_server(Impalad内部使用)和一个ImpalaServer服务。

Impala State Store: 跟踪集群中的Impalad的健康状态及位置信息,由statestored进程表示,它通过创建多个线程来处理Impalad的注册订阅和与各Impalad保持心跳连接,各Impalad都会缓存一份State Store中的信息,当State Store离线后(Impalad发现State Store处于离线时,会进入recovery模式,反复注册,当State Store重新加入集群后,自动恢复正常,更新缓存数据)因为Impalad有State Store的缓存仍然可以工作,但会因为有些Impalad失效了,而已缓存数据无法更新,导致把执行计划分配给了失效的Impalad,导致查询失败。

CLI: 提供给用户查询使用的命令行工具(Impala Shell使用python实现),同时Impala还提供了Hue,JDBC, ODBC使用接口。

大数据——Impala工具使用

六、Impala安装

Impala的安装方式有三种:

通过源码自行编译

通过RPM包安装(需要解决依赖问题)

通过cloudera-manager平台安装(推荐)

七、impala-shell命令

外部命令指的是不需要进入到impala-shell交互命令行当中即可执行的命令参数

impala-shell后面执行的时候可以带很多参数

#查看帮助 impala-shell -h #刷新元数据并进入impala impala-shell -r #执行一个SQL文件 impala-shell -f #执行一个SQL命令 impala-shell -q #连接到其他的impalad服务 impala-shell -i #将结果输出到文件 impala-shell -o

内部命令指的是进入impala-shell命令行之后可以执行的语法

大数据——Impala工具使用

八、数据库语句

数据库命令

-- 创建数据库 create database if not exists database_name; -- 删除数据库 drop database if exists database_name cascade; 

数据表命令

-- 创建表 create table if not exists table_name(field1 type1,field2,type2,...) location 'file_dir' -- 查询表信息 desc table_name; -- 查询表信息(格式) desc formatted table_name; -- 插入数据 insert into table_name values(field1,field2,...); -- 修改表名 alter table table_nameA rename to table_nameB; -- 添加列 alter table table_name add columns(field type); -- 删除列 alter table table_name drop field; -- 修改列名 alter table table_name change fieldA fieldB type; -- 清空表 truncate table table_name; -- 删除表 drop table table_name; 

视图操作

-- 创建视图 create view if not exists view_name as select field1,field2,... from table_name; -- 查看视图 desc view_name; -- 查看视图(格式) desc formatted view_name; -- 修改视图 alter view view_name as select field1,... from table_name; -- 删除视图 drop view view_name;

Impala数据导入

load 导入数据

-- 建表 create table table_name(field1 type1,field2 type2,...) row format delimited fields terminated by '\t' -- 通过文件进行数据导入 load data inpath 'file_dir'

insert 插入数据

-- 建表 create table table_name(field1 type1,field2 type2,...); -- 通过insert插入数据into表示追加插入overwrite表示覆盖插入 insert into/overwrite table table_name values(field1,field2,...);

通过select 语句导入数据

-- 通过select语句插入 create table table_nameB(field1 type1,field2 type2,...); insert into table_nameB select field1,... from table_nameA; -- 通过select 语句建表 create table table_nameB as select field1,... from table_nameA;

刷新Impala数据

Impala catalogd 不是实时进行元数据抓取的,所以当Hive有了数据的更新,我们在Impala中需要手动刷新元数据

-- 增量刷新,主要用于刷新Hive当中数据表里面的数据改变情况 refresh dbname.tablename; -- 全量刷新,性能消耗较大,主要用于Hive当中新建数据库或者数据表的时候进行刷新或者每天数仓批处理后执行 invalidate metadata;

九、Java API

9.1 驱动包下载https://www.cloudera.com/downloads/connectors/impala/jdbc/2-5-28.html

9.2 创建java工程,创建普通的即可,把依赖添加到工程

9.3 编写代码

package com.wch; import java.sql.*; public class ImpalaDemo { public static void main(String[] args) { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { Class.forName("com.cloudera.impala.jdbc41.Driver"); // 1.创建连接 Connection conn = DriverManager.getConnection("jdbc:impala://localhost:21050"); // 2.获取ps对象 ps = conn.prepareStatement("select * from test.employee;"); // 3.执行查询语句 rs = ps.executeQuery(); // 4.对查询到的结果进行遍历 while (rs.next()){ System.out.print(rs.getInt(1)+"\t"); System.out.print(rs.getString(2)+"\t"); System.out.print(rs.getInt(3)+"\t"); System.out.print(rs.getString(4)+"\t"); System.out.println(); } } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } finally { try { rs.close(); ps.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } } }

9.4 配置SSH隧道

image-20210817112623156

9.5 执行代码

2 Khilan 25 Delhi 5 Hardik 27 Bhopal 1 Ramesh 32 Ahmedabad 4 Chaitali 25 Mumbai 6 Komal 22 MP 3 kaushik 23 Kota 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225844.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午8:25
下一篇 2026年3月17日 上午8:25


相关推荐

  • 【线性代数】矩阵、向量、行列式、特征值与特征向量(掌握这些概念一篇文章就够了)

    【线性代数】矩阵、向量、行列式、特征值与特征向量(掌握这些概念一篇文章就够了)很多人在大学学习线性代数时 国内教材书上大多一开始就是行列式的表示 计算 性质等等东西 让人看得云里雾里 一头雾水 然后要花很多时间才大概知道线性代数是个什么东西 本文不提书上晦涩难懂的内容 尽量用大白话来阐述我对线性代数的浅显理解

    2026年3月18日
    3
  • SecureCRT中文显示乱码解决

    SecureCRT中文显示乱码解决先放图由于我自己装的是中文版的Linux系统,所以在显示中文的时候,SecureCRT显示出乱码。后来我查了下Linux系统字符编码默认是utf-8格式的!要将SecureCRT也设置成UTF-8才能进行正常显示。设置步骤:1、选择字符编码为UTF-8。点击【会话选项】–>选择【外观】。将字符编码设置为UTF-8格式。2、设置字符集为GB2312。点击【字体】–>将字符集设…

    2022年7月17日
    23
  • jsp中重定向与转发的区别_jsp重定向语句是什么

    jsp中重定向与转发的区别_jsp重定向语句是什么jsp中重定向和转发的区别:

    2025年10月1日
    5
  • Openclaw (小龙虾),太疯狂了。

    Openclaw (小龙虾),太疯狂了。

    2026年3月13日
    2
  • jqueryCDN地址

    jqueryCDN地址百度 CDN 支持版本 2 0 3 2 0 2 2 0 1 2 0 0 1 11 1 1 10 2 1 10 1 1 10 0 1 9 1 1 9 0 1 8 3 1 8 2 1 8 1 1 8 0 1 7 2 1 7 1 1 7 0 1 6 4 1 6 3 1 6 2 1 6 1 1 6 0 1 5 2 1 5 1 1 5 0 1 4 4 1 4 3

    2026年3月11日
    1
  • SSAS(2)_SSA全称

    SSAS(2)_SSA全称上1篇通过书中实验练习,开发了一个SSASCube。这里,基于这个Cube,再深入小结、试验有关SSASCube开发的扩展知识:维度属性间的关系及维度的层次结构(Hierarchies)维度与度量的关系多维数据集(Cube)KPI的实现多维数据集(Cube)行为(Action)的实现,例如:钻取多维数据集(Cube)的本地化与视图多维表达式(MDX)的应用书名:MCTSSel

    2025年7月27日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号