参考:Apache Impala Guide--Impala SQL Language Reference。

Impala使用和Hive一样的元数据存储,Impala可以访问使用原生Impala CREATE TABLE创建的表和Hive DDL创建的表;

Impala支持和HiveQL类似的DML;

支持TRUNCATE(至少在5.5及之前,不支持Kudu表)

UPDATE/UPSERT(5.10开始支持Kudu表)

Impala提供了很多和HiveQL等价的内置函数;

支持大多数子句如WITH, JOIN, AGGREGATE,DISTINCT, UNION ALL, ORDER BY, LIMIT(相关子查询除外);

支持和Hive一样的数据类型,如STRING, TINYINT,SMALLINT, INT, BIGINT, FLOAT, DOUBLE, BOOLEAN, STRING, TIMESTAMP(需要注意Kudu和Parquet文件格式的限制);

impala支持分区表、外部表;

impala支持绝大部分SQL 92语句;

查看各种上下文信息,可以使用SHOW XXX;如:

SHOW DATABASES [[LIKE] 'pattern']
SHOW SCHEMAS [[LIKE] 'pattern'] - an alias for SHOW DATABASES
SHOW TABLES [IN database_name] [[LIKE] 'pattern']
SHOW [AGGREGATE | ANALYTIC] FUNCTIONS [IN database_name] [[LIKE] 'pattern']
SHOW CREATE TABLE [database_name].table_name
SHOW CREATE VIEW [database_name].view_name
SHOW TABLE STATS [database_name.]table_name
SHOW COLUMN STATS [database_name.]table_name
SHOW [RANGE] PARTITIONS [database_name.]table_name
SHOW FILES IN [database_name.]table_name [PARTITION (key_col_expression [,
key_col_expression]]
SHOW ROLES
SHOW CURRENT ROLES
SHOW ROLE GRANT GROUP group_name
SHOW GRANT ROLE role_name

和RDBMS一样,支持统计信息收集COMPUTE [INCREMENTAL] STATS [db_name.]table_name(不同于Hive的ANALYZE TABLE需要分别为列和表收集统计信息,会一次性收集);增量统计信息收集适合于分区表(在ETL的最后应该收集统计信息)。下列语句可用来查看表的统计信息:

[quickstart.cloudera:] > show table stats t1;
Query: show table stats t1
+-------+--------+------+--------------+-------------------+--------+-------------------+--------------------------------------------------------+
| #Rows | #Files | Size | Bytes Cached | Cache Replication | Format | Incremental stats | Location |
+-------+--------+------+--------------+-------------------+--------+-------------------+--------------------------------------------------------+
| - | | 512B | NOT CACHED | NOT CACHED | TEXT | false | hdfs://quickstart.cloudera:8020/user/hive/warehouse/t1 |
+-------+--------+------+--------------+-------------------+--------+-------------------+--------------------------------------------------------+
Fetched row(s) in .17s
[quickstart.cloudera:] > show column stats t1;
Query: show column stats t1
+--------+------+------------------+--------+----------+----------+
| Column | Type | #Distinct Values | #Nulls | Max Size | Avg Size |
+--------+------+------------------+--------+----------+----------+
| x | INT | - | - | | |
+--------+------+------------------+--------+----------+----------+
Fetched row(s) in .11s

支持优化器提示(但是比较弱,要掌握优化器提示,必须先掌握执行计划)

有好几种格式(有点乱):

SELECT STRAIGHT_JOIN select_list FROM
join_left_hand_table
JOIN [{ /* +BROADCAST */ | /* +SHUFFLE */ }]
join_right_hand_table
remainder_of_query; INSERT insert_clauses
[{ /* +SHUFFLE */ | /* +NOSHUFFLE */ }]
[/* +CLUSTERED */]
SELECT remainder_of_query; SELECT select_list FROM
table_ref
/* +{SCHEDULE_CACHE_LOCAL | SCHEDULE_DISK_LOCAL | SCHEDULE_REMOTE}
[,RANDOM_REPLICA] */
remainder_of_query; -- 最近的优化器提示支持下列格式:
SELECT select_list FROM
join_left_hand_table
JOIN -- +BROADCAST|SHUFFLE
join_right_hand_table
remainder_of_query; INSERT insert_clauses
/* +SHUFFLE|NOSHUFFLE */
SELECT remainder_of_query;

有针对Impala执行本身的、也有针对控制HDFS调度的。

支持的各种hint可以参考Query Hints in Impala SELECT Statements

数据移动操作,LOAD DATA语句可以用来将HDFS目录的数据移动到Impala数据目录(目前不支持从本地文件系统移动,真正的移动、不是复制)可以直接映射到HDFS文件,那什么时候需要这个操作??(其实和外部表性质类似,只不过移动后文件为Impala管辖,否则为HDFS管辖)。

LOAD DATA INPATH 'hdfs_file_or_directory_path' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

会话上下文设置:

它原先是一个impala-shell命令,后来被扩展为SQL语句,主要用于JDBC和ODBC API中。

不带任何参数可输出所有可设置的上下文选项列表,如下:

[quickstart.cloudera:21000] > set
> ;
Query options (defaults shown in []):
ABORT_ON_DEFAULT_LIMIT_EXCEEDED: []
ABORT_ON_ERROR: []
ALLOW_UNSUPPORTED_FORMATS: []
APPX_COUNT_DISTINCT: []
BATCH_SIZE: []
BUFFER_POOL_LIMIT: []
COMPRESSION_CODEC: [NONE]
DEBUG_ACTION: []
DECIMAL_V2: []
DEFAULT_JOIN_DISTRIBUTION_MODE: []
DEFAULT_ORDER_BY_LIMIT: [-1]
DEFAULT_SPILLABLE_BUFFER_SIZE: []
DISABLE_CACHED_READS: []
DISABLE_CODEGEN: []
DISABLE_CODEGEN_ROWS_THRESHOLD: []
DISABLE_OUTERMOST_TOPN: []
DISABLE_ROW_RUNTIME_FILTERING: []
DISABLE_STREAMING_PREAGGREGATIONS: []
DISABLE_UNSAFE_SPILLS: []
ENABLE_EXPR_REWRITES: []
EXEC_SINGLE_NODE_ROWS_THRESHOLD: []
EXPLAIN_LEVEL: []
HBASE_CACHE_BLOCKS: []
HBASE_CACHING: []
MAX_ERRORS: []
MAX_IO_BUFFERS: []
MAX_NUM_RUNTIME_FILTERS: []
MAX_ROW_SIZE: []
MAX_SCAN_RANGE_LENGTH: []
MEM_LIMIT: []
MIN_SPILLABLE_BUFFER_SIZE: []
MT_DOP: []
NUM_NODES: []
NUM_SCANNER_THREADS: []
OPTIMIZE_PARTITION_KEY_SCANS: []
PARQUET_ANNOTATE_STRINGS_UTF8: []
PARQUET_ARRAY_RESOLUTION: []
PARQUET_DICTIONARY_FILTERING: []
PARQUET_FALLBACK_SCHEMA_RESOLUTION: []
PARQUET_FILE_SIZE: []
PARQUET_READ_STATISTICS: []
PREFETCH_MODE: []
QUERY_TIMEOUT_S: []
REPLICA_PREFERENCE: []
REQUEST_POOL: []
RESERVATION_REQUEST_TIMEOUT: []
RM_INITIAL_MEM: []
RUNTIME_BLOOM_FILTER_SIZE: []
RUNTIME_FILTER_MAX_SIZE: []
RUNTIME_FILTER_MIN_SIZE: []
RUNTIME_FILTER_MODE: []
RUNTIME_FILTER_WAIT_TIME_MS: []
S3_SKIP_INSERT_STAGING: []
SCAN_NODE_CODEGEN_THRESHOLD: []
SCHEDULE_RANDOM_REPLICA: []
SCRATCH_LIMIT: [-1]
SEQ_COMPRESSION_MODE: []
STRICT_MODE: []
SUPPORT_START_OVER: [false]
SYNC_DDL: []
V_CPU_CORES: [] Shell Options
LIVE_PROGRESS: False
LIVE_SUMMARY: False Variables:
No variables defined.

作为命令行参数值不需要带引号,否则需要引号。所有可用的选项可以参考“Query Options for the SET Statement”。

Hadoop-Impala学习笔记之SQL参考的更多相关文章

  1. SQL反模式学习笔记21 SQL注入

    目标:编写SQL动态查询,防止SQL注入 通常所说的“SQL动态查询”是指将程序中的变量和基本SQL语句拼接成一个完整的查询语句. 反模式:将未经验证的输入作为代码执行 当向SQL查询的字符串中插入别 ...

  2. Hadoop入门学习笔记---part4

    紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...

  3. Hadoop入门学习笔记---part3

    2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...

  4. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  5. Hadoop入门学习笔记---part2

    在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...

  6. Hadoop入门学习笔记---part1

    随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力, ...

  7. impala学习笔记

    impala学习笔记 -- 建库 CREATE DATABASE IF NOT EXISTS database_name; -- 在HDFS文件系统中创建数据库,需要指定要创建数据库的位置. CREA ...

  8. CUBRID学习笔记 41 sql语法之select

    cubrid的中sql查询语法 SELECT [ ] [{TO | INTO} ][FROM ] [WHERE ][GROUP BY {col_name | expr} [ASC | DESC], . ...

  9. Hadoop入门学习笔记(一)

    Week2 学习笔记 Hadoop核心组件 Hadoop HDFS(分布式文件存储系统):解决海量数据存储 Hadoop YARN(集群资源管理和任务调度框架):解决资源任务调度 Hadoop Map ...

随机推荐

  1. 壁虎书3 Classification

    MNIST fetch_openml returns the unsorted MNIST dataset, whereas fetch_mldata() returned the dataset s ...

  2. linux用户添加组

    usermod -G groupname username (这种会把用户从其他组中去掉,只属于该组)如:usermod -G git git (git只属于git组) usermod -a -G g ...

  3. DocX Xceed.Words.NET操作Word,插入特殊符号

    x 传送门,我们走... DocX的Github传送门 介绍一 介绍二 写入特殊符号 开始... 自己做一个工具,要导出Word的,当时刚开始想使用Xceed.Words.NET.dll第三方插件进行 ...

  4. VUE iview date-picker取时间范围...

    x HTML <script src="//unpkg.com/vue/dist/vue.js"></script> <script src=&quo ...

  5. 关于反射和JVM的整理

  6. django的分页与添加图片

    分页: 在主页面的views里写接口 导包: from django.core.paginator import Paginator 接口: id=request.GET.get("page ...

  7. js canvas获取图片base64 dataUrl

    function getImgBase64(path, callback) { var img = new Image(); img.src = path; //图片加载完成后触发 img.onloa ...

  8. [daily] cscope

    手册: http://cscope.sourceforge.net/cscope_vim_tutorial.html 下载 cscope_maps.vim 到 $HOME/.vim/plugin/ 目 ...

  9. java script基本数据类型与数组

    基本数据类型 1.undefined  (var a;) 2.null   (var a=null); 3.String  (var a=" " or ' '); 4.boolea ...

  10. 软件工程第二次作业-VSTS单元测试

    一.选择开发工具 开发工具选择 Visual studio 2017 社区版,开发语言为C 由于之前已经安装完毕,所以不上传安装过程,主界面如下: 二.练习自动单元测试 使用的测试工具是VSTS,具体 ...