当前位置: 首页 > news >正文

【Impala】学习笔记

Impala学习笔记

  • 【一】Impala介绍
    • 【1】简介
      • (1)简介
      • (2)优点
      • (3)缺点
    • 【2】架构
      • (1)Impalad(守护进程)
      • (2)Statestore(存储状态)
      • (3)metadata(元数据)/metastore(元存储)
  • 【三】Impala安装
  • 【四】Impala接口
  • 【五】Impala查询处理
    • 【1】database
    • 【2】table
    • 【3】条件

【一】Impala介绍

【1】简介

(1)简介

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

Impala是建立砸Hadoop生态圈的交互式sql解析、执行引擎,Impala的sql语法和Hive高度兼容,并且提供标准的ODBC和JDBC接口。

Impala本身不提供数据的存储服务,其底层数据可来自HDFS、Kudu、Hbase

Impala是一个MPP(大规模并行处理)SQL查询引擎:
1-是一个用C ++和Java编写的开源软件;
2-用于处理存储在Hadoop集群中大量的数据;
3-性能最高的SQL引擎(提供类似RDBMS的体验),提供了访问存储在Hadoop分布式文件系统中的数据的最快方法。

(2)优点

(1)基于内存运算,不需要把中间结果写入磁盘,省掉了大量的I/O开销。
(2)无需转换为Mapreduce,直接访问存储在HDFS,HBase中的数据进行作业调度,速度快。
(3)使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。
(4)支持各种文件格式,如TEXTFILE 、SEQUENCEFILE 、RCFile、Parquet。
(5)可以访问hive的metastore,对hive数据直接做数据分析。

(3)缺点

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

【2】架构

在这里插入图片描述

impala主要由以下三个组件组成:
(1)Impala daemon(守护进程);
(2)Impala Statestore(存储状态);
(3)Impala元数据或metastore(元数据即元存储)。

(1)Impalad(守护进程)

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

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

(2)Statestore(存储状态)

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

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

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

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

【三】Impala安装

【四】Impala接口

Impala提供了三种方式去做查询处理:
(1)Impala-shell :命令窗口中键入impala-shell命令来启动Impala shell;
(2)Hue界面 :您可以使用Hue浏览器处理Impala查询;
(3)ODBC / JDBC驱动程序 :与其他数据库一样,Impala提供ODBC / JDBC驱动程序。

了解impala的数据类型:
在这里插入图片描述

【五】Impala查询处理

【1】database

(1)创建数据库

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

(2)删除数据库

-- 语法:
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT | 
CASCADE] [LOCATION hdfs_path];-- 示例:
DROP DATABASE IF EXISTS samp`在这里插入代码片`le_database;

(3)选择数据库

-- 语法:
USE db_name;

【2】table

(1)创建表

-- 语法:
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 );

(2)插入表

-- 语法:
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 );

(3)查询表

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

(4)表描述

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

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

-- 语法:
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;

(6)删除表

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

(7)截断表

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

(8)显示表

show tables 

(9)创建视图

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

(10)修改视图

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

(11)删除视图

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

【3】条件

(1)order by 子句

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

(2)group by 字句

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

(3)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;

(4)limit限制

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

(5)offset偏移

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

(6)union聚合

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

(7)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);

(8)distinct去重

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android之复制文本(TextView)剪贴板
  • 【docker快捷部署系列一】docker快速入门,安装docker,解决运行Docker Quickstart Terminal出错
  • 9、阿里云 Ubuntu22.04、安装docker、mysql、mongodb
  • JVM知识总结(类加载器)
  • 医疗大健康解决方案HIS方案
  • C# Unity 面向对象补全计划 七大原则 之 迪米特法则(Law Of Demeter )难度:☆☆☆ 总结:直取蜀汉
  • MongoDB的复合通配符索引详解
  • ulimit
  • ShardingSphere之ShardingProxy集群部署
  • C# 在Word中插入或删除分节符
  • 创建一个简单的贪吃蛇游戏:HTML、CSS和JavaScript教程
  • VS2022使用.Net Framework4.0方法
  • 【实战营彩蛋InternLM 1.8B 模型 Android 端侧部署实践
  • GitHub开源项目精选:用React、TypeScript和Framer Motion复刻MacOS桌面
  • 内核函数调试
  • [ JavaScript ] 数据结构与算法 —— 链表
  • Android单元测试 - 几个重要问题
  • echarts花样作死的坑
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • in typeof instanceof ===这些运算符有什么作用
  • iOS 颜色设置看我就够了
  • JAVA 学习IO流
  • JavaScript HTML DOM
  • JS变量作用域
  • Rancher-k8s加速安装文档
  • React Native移动开发实战-3-实现页面间的数据传递
  • Spring-boot 启动时碰到的错误
  • SpringBoot 实战 (三) | 配置文件详解
  • use Google search engine
  • 服务器从安装到部署全过程(二)
  • 回顾2016
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 树莓派 - 使用须知
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 原生 js 实现移动端 Touch 滑动反弹
  • 最近的计划
  • Java数据解析之JSON
  • 数据库巡检项
  • ​Java并发新构件之Exchanger
  • ​Spring Boot 分片上传文件
  • #QT(一种朴素的计算器实现方法)
  • (13)Hive调优——动态分区导致的小文件问题
  • (3)nginx 配置(nginx.conf)
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (区间dp) (经典例题) 石子合并
  • (数据结构)顺序表的定义
  • (四)js前端开发中设计模式之工厂方法模式
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • ***利用Ms05002溢出找“肉鸡
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .net dataexcel 脚本公式 函数源码
  • .Net Memory Profiler的使用举例