Impala(分布式文件系统sql)

Ⅰ. Why Impala ?

  • Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性
  • 省掉了MapReduce作业启动的开销。MapReduce启动task的速度很慢(默认每个心跳间隔是3秒钟),Impala直接通过相应的服务进程来进行作业调度,速度快了很多。
  • Impala完全抛弃了MapReduce这个不太适合做SQL查询的范式,而是像Dremel一样借鉴了MPP并行数据库的思想另起炉灶,因此可做更多的查询优化,从而省掉不必要的shuffle、sort等开销。
  • Impala支持内存中数据处理,它访问/分析存储在Hadoop数据节点上的数据,而无需数据移动,省掉了大量的I/O开销。
  • 使用类SQL查询访问数据。
  • Impala为HDFS或HBase中的数据提供了更快的访问。

缺点:

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

关系数据库和Impala

Impala使用类似于SQL和HiveQL的Query语言。 下表描述了SQL和Impala查询语言之间的一些关键差异。

Impala关系型数据库
Impala使用类似于HiveQL的类似SQL的查询语言。关系数据库使用SQL语言。
在Impala中,您无法更新或删除单个记录。在关系数据库中,可以更新或删除单个记录。
Impala不支持事务。关系数据库支持事务。
Impala不支持索引。关系数据库支持索引。
Impala存储和管理大量数据(PB)。 与Impala相比,关系数据库处理的数据量较少(TB)。

Impala与hive相同点

  1. 数据储存:使用相同的数据存储池,都可以将数据的储存在HDFS或HBase中。
  2. 元数据:两者使用相同的元数据
  3. SQL解释处理:比较相似的就是都是通过词法分析生成执行计划。
  4. 查询计划树

Ⅱ. Impala架构组成

  • Impala daemon(守护进程):每个节点上接受接口查询,将工作分发到impala集群
  • Impala Statestore(存储状态):检查守护进程状态
  • Impala元数据或metastore(元数据即元存储):类似MySql等传统数据库存储表和列信息

Ⅲ. Impala接口

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

Ⅳ. Impala语句

1. 数据库操作

CREATE DATABASE IF NOT EXISTS database_name;
DROP DATABASE IF EXISTS sample_database;
USE db_name;

2. 表操作

create table IF NOT EXISTS database_name.table_name (
   column1 data_type,
   ………
   columnN data_type
);

insert into table_name (column1,...columnN) values (value1,...valueN);
insert overwrite table_name values (value1,...valueN);

SELECT column1, column2, columnN from table_name;

describe table_name;  --表描述

show tables --显示表

-- 重命名
ALTER TABLE [old_db_name.]old_table_name RENAME TO [new_db_name.]new_table_name

DROP table database_name.table_name;

truncate table_name;  --截断表

--创建视图
Create View IF NOT EXISTS view_name as Select statement from table
--修改视图
ALTER VIEW database_name.view_name as (Select ...)
DROP VIEW database_name.view_name;

3. 条件查询

-- with子句
with x as (select 1), y as (select 2) (select * from x union y);
-- limit限制
select * from table_name order by id limit numerical_expression;
-- 排序
Select * from customers ORDER BY id asc;  --asc/desc

4. 分区表

create table stu_par(id int, name string)
partitioned by (month string)
row format delimited fields terminated by '\t';

Python连接Impala

pip install impyla    #安装
#导入包
from impala.dbapi import connect
#连接impala 
conn=connect(host='XXX.XX.XX.XX',port=21050) 
#定义一个执行者
cur=conn.cursor()
#执行语句并测试连接是否成功
cur.execute('SHOW DATABASES')
#将执行结果给fetchall并打印结果
print(cur.fetchall())
# 先关闭执行者	
cur.close()
# 再关断开连接
conn.close()

References

impala入门(一篇就够了)_杨林伟的博客-CSDN博客_impala

Impala,Hive,Hbase,关系数据库区别 - DavidZuo - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值