impala-学习

可以这么理解,Impala是性能最高的SQL引擎,速度快。
关系数据库和Impala

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

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

impala 创建数据库

在Impala中,数据库是一种在其命名空间中保存相关表,视图和函数的构造。 它在HDFS中表示为目录树; 它包含表分区和数据文件。

--创建数据库
CREATE DATABASE IF NOT EXISTS database_name;
--删除数据库
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT | 
CASCADE] [LOCATION hdfs_path];
--选择数据库
USE db_name;

impala TABLE语句

--创建新表
create table IF NOT EXISTS database_name.table_name (
   column1 data_type,
   column2 data_type,
   column3 data_type,
   ………
   columnN data_type
);
--添加新记录
insert into table_name (column1, column2, column3,...columnN)
values (value1, value2, value3,...valueN);
--覆盖表中的数据
Insert overwrite table_name values (value1, value2, value2);
--选择提取数据
SELECT column1, column2, columnN from table_name;
SELECT * FROM table_name;
 select id, name, age from customers;
--表描述
 Describe table_name;
--更改表的名称
 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;
--添加列的基本语法
 ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...]);
  ALTER TABLE users ADD COLUMNS (account_no BIGINT, 
phone_no BIGINT);
--删除列
ALTER TABLE name DROP [COLUMN] column_name;
--更改列的名称和类型
 ALTER TABLE users CHANGE phone_no e_mail string;
--删除表
 drop table if exists my_db.student;
--创建视图
  CREATE VIEW IF NOT EXISTS customers_view AS 
select name, age from customers;
--更改视图
Alter view customers_view as select id, name, 
salary from customers;
--删除视图
DROP VIEW database_name.view_name;

其他语句

--排序
select * from table_name ORDER BY col_name [ASC|DESC] [NULLS FIRST|NULLS LAST];
 Select * from customers ORDER BY id asc;
--聚合
select data from table_name Group BY col_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;
--distinct 
select distinct id, name, age, salary from customers; 

常用记录

表连接(三个表关联)

select distinct name from (select car_no,fuel_type,corp_id from (select car_no,fuel_type from gpsdb.base_car) t1 
LEFT OUTER JOIN (select logistic_id corp_id,car_no lic_plt_no from tmsdb.its_transport_car where car_no<>'') t2 on t1.car_no =t2.lic_plt_no) t3 
LEFT OUTER JOIN (select * from tmsdb.its_sys_company) t4 on t3.corp_id = t4.id

猜你喜欢

转载自blog.csdn.net/Alien_lily/article/details/82108348