impala入门(一篇就够了)

article/2025/9/21 7:32:42

文章目录

  • 01 引言
  • 02 impala概述
    • 2.1 简介
    • 2.2 架构
      • 2.2.1 Impalad(守护进程)
      • 2.2.2 Statestore(存储状态)
      • 2.2.3 metadata(元数据)/metastore(元存储)
  • 03 impala 安装
  • 04 impala 接口
  • 05 impala 查询处理
    • 5.1 database
    • 5.2 table
    • 5.3 条件
  • 06 文末

01 引言

最近因为DataX需要集成impala,所以有必要学习下impala,本文来讲解下。
在这里插入图片描述

02 impala概述

2.1 简介

简介:Impala是一个MPP(大规模并行处理)SQL查询引擎:

  • 是一个用C ++Java编写的开源软件;
  • 用于处理存储在Hadoop集群中大量的数据;
  • 性能最高的SQL引擎(提供类似RDBMS的体验),提供了访问存储在Hadoop分布式文件系统中的数据的最快方法。

优点:

  • 使用impala,用户可以使用传统的SQL知识以极快的速度处理存储在HDFSHBaseAmazon s3中的数据中的数据,而无需了解JavaMapReduce作业)。
  • 由于在数据驻留(在Hadoop集群上)时执行数据处理,因此在使用Impala时,不需要对存储在Hadoop上的数据进行数据转换和数据移动。

缺点:

  • 不提供任何对序列化和反序列化的支持;
  • 只能读取文本文件,而不能读取自定义二进制文件;
  • 每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新。

2.2 架构

在这里插入图片描述

impala主要由以下三个组件组成:

  • Impala daemon(守护进程)
  • Impala Statestore(存储状态)
  • Impala元数据或metastore(元数据即元存储)

下面来讲解下。

2.2.1 Impalad(守护进程)

daemon安装在Impala的每个节点上运行,它接受来自各种接口的查询,然后将工作分发到Impala集群中的其它Impala节点来并行化查询,结果返回到中央协调节。

可以将查询提交到专用Impalad或以负载平衡方式提交到集群中的另一Impalad

2.2.2 Statestore(存储状态)

Statestore负责检查每个Impalad的运行状况,然后经常将每个Impala Daemon运行状况中继给其他守护程序,如果由于任何原因导致节点故障的情况下,Statestore将更新所有其他节点关于此故障,并且一旦此类通知可用于其他Impalad,则其他Impala守护程序不会向受影响的节点分配任何进一步的查询。

2.2.3 metadata(元数据)/metastore(元存储)

Impala使用传统的MySQLPostgreSQL数据库来存储表定义和列信息这些元数据

当表定义或表数据更新时,其它Impala后台进程必须通过检索最新元数据来更新其元数据缓存,然后对相关表发出新查询。

03 impala 安装

详细安装方式可以参考:https://www.w3cschool.cn/impala/impala_environment.html

安装方式这里不会详解,大致讲一下流程:

  • 下载QuickStartVM
  • 下载cloudera-quickstart-vm-5.5.0-0-virtualbox.ovf文件后,我们需要使用虚拟盒导入
  • 然后启动Impala,打开终端并执行命令:impala-shell 在这里插入图片描述

04 impala 接口

Impala提供了三种方式去做查询处理

  • Impala-shell :命令窗口中键入impala-shell命令来启动Impala shell
  • Hue界面 :您可以使用Hue浏览器处理Impala查询;
  • ODBC / JDBC驱动程序 :与其他数据库一样,Impala提供ODBC / JDBC驱动程序。

在做查询处理之前,很有必要了解impala的数据类型:

数据类型描述
BIGINT此数据类型存储数值,此数据类型的范围为-9223372036854775808至9223372036854775807.此数据类型在create table和alter table语句中使用
BOOLEAN此数据类型只存储true或false值,它用于create table语句的列定义
CHAR此数据类型是固定长度的存储,它用空格填充,可以存储最大长度为255
DECIMAL此数据类型用于存储十进制值,并在create table和alter table语句中使用
DOUBLE此数据类型用于存储正值或负值4.94065645841246544e-324d -1.79769313486231570e + 308范围内的浮点值
FLOAT此数据类型用于存储正或负1.40129846432481707e-45 … 3.40282346638528860e + 38范围内的单精度浮点值数据类型
INT此数据类型用于存储4字节整数,范围从-2147483648到2147483647
SMALLINT此数据类型用于存储2字节整数,范围为-32768到32767
STRING这用于存储字符串值
TIMESTAMP此数据类型用于表示时间中的点
TINYINT此数据类型用于存储1字节整数值,范围为-128到127
VARCHAR此数据类型用于存储可变长度字符,最大长度为65,535
ARRAY这是一个复杂的数据类型,它用于存储可变数量的有序元素
Map这是一个复杂的数据类型,它用于存储可变数量的键值对
Struct这是一种复杂的数据类型,用于表示单个项目的多个字段

05 impala 查询处理

5.1 database

创建数据库:

-- 示例:
CREATE DATABASE IF NOT EXISTS database_name;

删除数据库:

-- 语法:
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT | 
CASCADE] [LOCATION hdfs_path];-- 示例:
DROP DATABASE IF EXISTS sample_database;

选择数据库:

-- 语法:
USE db_name;

5.2 table

创建表:

-- 语法:
create table IF NOT EXISTS database_name.table_name (column1 data_type,column2 data_type,column3 data_type,………columnN data_type
);-- 示例:
CREATE TABLE IF NOT EXISTS my_db.student(name STRING, age INT, contact INT );

插入表:

-- 语法:
insert into table_name (column1, column2, column3,...columnN) values (value1, value2, value3,...valueN);
insert overwrite table_name values (value1, value2, value2);-- 示例:
insert into employee (ID,NAME,AGE,ADDRESS,SALARY)VALUES (1, 'Ramesh', 32, 'Ahmedabad', 20000 );
insert overwrite employee values (1, 'Ram', 26, 'Vishakhapatnam', 37000 );

查询表:

-- 语法:
SELECT column1, column2, columnN from table_name;--示例:
select name, age from customers; 

表描述:

-- 语法:
describe table_name;-- 示例:
describe customer;

修改表(重命名表案例,其它自行查阅):

-- 语法:
ALTER TABLE [old_db_name.]old_table_name RENAME TO [new_db_name.]new_table_name-- 示例:
ALTER TABLE my_db.customers RENAME TO my_db.users;

删除表:

-- 语法:
DROP table database_name.table_name;--示例:
drop table if exists my_db.student;

截断表:

-- 语法:
truncate table_name;-- 示例:
truncate customers;

显示表:

show tables 

创建视图:

-- 语法:
Create View IF NOT EXISTS view_name as Select statement
-- 示例:
CREATE VIEW IF NOT EXISTS customers_view AS select name, age from customers;

修改视图:

-- 语法
ALTER VIEW database_name.view_name为Select语句
-- 示例
Alter view customers_view as select id, name, salary from customers;

删除视图:

-- 语法:
DROP VIEW database_name.view_name;
-- 示例:
Drop view customers_view;

5.3 条件

order by 子句:

--语法
select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]
--示例
Select * from customers ORDER BY id asc;

group by 字句:

-- 语法
select data from table_name Group BY col_name;
-- 示例
Select name, sum(salary) from customers Group BY name;

having 子句:

--语法
select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST]
-- 示例
select max(salary) from customers group by age having max(salary) > 20000;

limit限制:

-- 语法:
select * from table_name order by id limit numerical_expression;

offset偏移:

-- 示例:
select * from customers order by id limit 4 offset 0;

union聚合:

-- 语法:
query1 union query2;
-- 示例:
select * from customers order by id limit 3
union select * from employee order by id limit 3;

with子句:

-- 语法:
with x as (select 1), y as (select 2) (select * from x union y);
-- 示例:
with t1 as (select * from customers where age>25), t2 as (select * from employee where age>25) (select * from t1 union select * from t2);

distinct去重:

-- 语法:
select distinct columnsfrom table_name;
-- 示例:
select distinct id, name, age, salary from customers; 

06 文末

本文主要讲解了impala的一些概念以及查询处理方式,谢谢大家的阅读,本文完!


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

相关文章

大数据——Impala工具使用

目录 一、Impala概述 二、Impala优点 三、Impala和Hive 3.1 Impala和Hive的关系 3.2 Impala和Hive的区别 五、Impala查询过程 六、Impala安装 七、impala-shell命令 八、数据库语句 数据库命令 数据表命令 视图操作 Impala数据导入 刷新Impala数据 九、Java API 一…

近端策略优化算法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方式的,由于之前没有接触过此类算法,因此进行了简单学习,论文…