大数据——Impala工具使用

article/2025/9/21 7:46:46

目录

一、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主要由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的安装方式有三种:

通过源码自行编译

通过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命令行之后可以执行的语法

八、数据库语句

数据库命令

-- 创建数据库
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.创建连接 Connectionconn = 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	


http://chatgpt.dhexx.cn/article/Kaf4jjv9.shtml

相关文章

近端策略优化算法PPO

本文介绍近端策略优化算法(Proximal Policy Optimization)也就是PPO。 文章目录 前言一、on-policy和off-policy1.1 on-policy和off-policy的概念1.2 Importance Sampling的概念 二、TRPO、PPO算法2.1 Trust Region Algorithms2.2 Stochastic Gradient A…

【强化学习】PPO算法求解倒立摆问题 + Pytorch代码实战

文章目录 一、倒立摆问题介绍二、PPO算法简介三、详细资料四、Python代码实战4.1 运行前配置4.2 主要代码4.3 运行结果展示4.4 关于可视化的设置 一、倒立摆问题介绍 Agent 必须在两个动作之间做出决定 - 向左或向右移动推车 - 以使连接到它的杆保持直立。 二、PPO算法简介 …

强化学习之PPO

阅读本文前先了解TRPO算法有助于理解,我对此也写过博客:https://blog.csdn.net/tianjuewudi/article/details/120191097 参考李宏毅老师的视频:https://www.bilibili.com/video/BV1Wv411h7kN?p80 PPO,全名Proximal Policy Opti…

【强化学习】PPO:从On-policy到Off-policy(PPO/TRPO/PPO-Penalty/PPO-Clip)

目录 一、为什么要从On- Policy到Off-Policy?二、如何从On- Policy到Off-Policy?三、如何使 p θ ( a t ∣ s t ) p_\theta(a_t|s_t) pθ​(at​∣st​)和 p θ ′ ( a t ∣ s t ) p_{\theta}(a_t|s_t) pθ′​(at​∣st​)不相差太多?3.1 PP…

如何理解PPO算法的核心操作clip

回顾 传统的策略梯度算法以下式作为策略网络的损失: g ^ E ^ t [ ∇ θ log ⁡ π θ ( a t ∣ s t ) A ^ t ] \hat{g}\hat{\mathbb{E}}_{t}\left[\nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \hat{A}_{t}\right] g^​E^t​[∇θ​logπθ​…

强化学习PPO从理论到代码详解(2)---PPO1和PPO2

在线或离线学习 上一节我们了解了什么是策略梯度,本节开始讲PPO理论之前,我们先提出一个概念,什么在线学习,什么离线学习。 On-policy: Then agent learned and the agent interacting with Environment is the same Off-policy…

强化学习PPO代码讲解

阅读本文前对PPO的基本原理要有概念性的了解,本文基于我的上一篇文章:强化学习之PPO 当然,查看代码对于算法的理解直观重要,这使得你的知识不止停留在概念的层面,而是深入到应用层面。 代码采用了简单易懂的强化学习…

PPO算法(附pytorch代码)

这里写目录标题 一、PPO算法(1)简介(2)On-policy?(3)GAE (Generalized Advantage Estimation) 三、代码代码解析: 一、PPO算法 (1)简介 PPO算法…

论文笔记之PPO

15年OpenAI发表了TRPO算法,一直策略单调提升的算法;17年DeepMind基于TRPO发表了一篇Distributed-PPO,紧接着OpenAI发表了这篇PPO。可以说TRPO是PPO的前身,PPO在TRPO的基础上进行改进,使得算法可读性更高,实…

PPO实战学习总结

PPO used in go-bigger 前段时间一直在学习ppo算法,写了 一点总结,记录一下自己对ppo算法的一些理解与RL实战时候容易遇到的一些问题。代码地址如下,需要的可以自取: https://github.com/FLBa9762/PPO_used_in_Gobigger.git一般…

PPO算法

在线学习和离线学习 在线学习:和环境互动的Agent以及和要学习的Agent是同一个, 同一个Agent,一边和环境做互动,一边在学习。离线学习: 和环境互动及的Agent以和要学习的Agent不是同一个,学习的Agent通过看别人完来学习。 利用新的…

PPO2代码 pytorch框架

PPO2代码玩gym库的Pendulum环境 2022-8-02更新 我发现这篇文章浏览量惨淡啊。 咋滴,是不相信的我代码能用是吗? 所以,我给出reward的收敛曲线图: 开玩笑,出来混,我能卖你生瓜码子吗? ———…

PPO实战

哈哈初学,复现龙龙老师的实例! state:是平衡小车上的杆子,观测状态由 4 个连续的参数组成:推车位置 [-2.4,2.4],车速 [-∞,∞],杆子角度 [~-41.8&#xff0c…

PyTorch实现PPO代码

原理:Proximal Policy Optimization近端策略优化(PPO) 视频:Proximal Policy Optimization (PPO) is Easy With PyTorch | Full PPO Tutorial 代码来自github: Youtube-Code-Repository EasyRL 网站:Neural…

优化PPO

优化PPO 介绍core implementation details1.Vectorized architecture 量化结构Orthogonal Initialization of Weights and Constant Initialization of biases 算法权重的初始化以及恒定偏差的初始化The Adam Optimizer’s Epsilon Parameter Adam优化器的ε参数Adam Learning …

PPO Algorithm

‘‘目录 PPO ALGORITHM 进行看别人文章: 如何直观理解PPO算法?[理论篇] - 知乎 (zhihu.com) 【强化学习8】PPO - 知乎 (zhihu.com) PPO(OpenAI) Proximal Policy Optimization(PPO)算法原理及实现! - 简书 (jianshu.com) 1-Critic的作用与效果.m…

PPO算法实战

原理简介 PPO是一种on-policy算法,具有较好的性能,其前身是TRPO算法,也是policy gradient算法的一种,它是现在 OpenAI 默认的强化学习算法,具体原理可参考PPO算法讲解。PPO算法主要有两个变种,一个是结合K…

Proximal Policy Optimization(近端策略优化)(PPO)原理详解

本节开始笔者针对自己的研究领域进行RL方面的介绍和笔记总结,欢迎同行学者一起学习和讨论。本文笔者来介绍RL中比较出名的算法PPO算法,读者需要预先了解Reinforcement-Learning中几个基础定义才可以阅读,否则不容易理解其中的内容。不过笔者尽…

【强化学习PPO算法】

强化学习PPO算法 一、PPO算法二、伪代码三、相关的简单理论1.ratio2.裁断3.Advantage的计算4.loss的计算 四、算法实现五、效果六、感悟 最近再改一个代码,需要改成PPO方式的,由于之前没有接触过此类算法,因此进行了简单学习,论文…

【深度强化学习】(6) PPO 模型解析,附Pytorch完整代码

大家好,今天和各位分享一下深度强化学习中的近端策略优化算法(proximal policy optimization,PPO),并借助 OpenAI 的 gym 环境完成一个小案例,完整代码可以从我的 GitHub 中获得: https://gith…