Hadoop-Impala学习笔记之SQL参考
参考: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参考的更多相关文章
- SQL反模式学习笔记21 SQL注入
目标:编写SQL动态查询,防止SQL注入 通常所说的“SQL动态查询”是指将程序中的变量和基本SQL语句拼接成一个完整的查询语句. 反模式:将未经验证的输入作为代码执行 当向SQL查询的字符串中插入别 ...
- Hadoop入门学习笔记---part4
紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操 ...
- Hadoop入门学习笔记---part3
2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hado ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- Hadoop入门学习笔记---part2
在<Hadoop入门学习笔记---part1>中感觉自己虽然总结的比较详细,但是始终感觉有点凌乱.不够系统化,不够简洁.经过自己的推敲和总结,现在在此处概括性的总结一下,认为在准备搭建ha ...
- Hadoop入门学习笔记---part1
随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力, ...
- impala学习笔记
impala学习笔记 -- 建库 CREATE DATABASE IF NOT EXISTS database_name; -- 在HDFS文件系统中创建数据库,需要指定要创建数据库的位置. CREA ...
- CUBRID学习笔记 41 sql语法之select
cubrid的中sql查询语法 SELECT [ ] [{TO | INTO} ][FROM ] [WHERE ][GROUP BY {col_name | expr} [ASC | DESC], . ...
- Hadoop入门学习笔记(一)
Week2 学习笔记 Hadoop核心组件 Hadoop HDFS(分布式文件存储系统):解决海量数据存储 Hadoop YARN(集群资源管理和任务调度框架):解决资源任务调度 Hadoop Map ...
随机推荐
- Java演算法-「馬踏棋盤問題」
/* * 馬踏棋盤問題:(貪婪法求解) * 棋盤有64個位置,“日”字走法,剛好走滿整個棋盤 */ //下一個走法的方向類 class Direction{ int x; int y; int way ...
- 减少xcode错误输出
运行xcrun相关命令如果出现找不到对应模块和工具,要确认一下在xcode中命令行工具是否正确设置了 xcrun simctl spawn booted log config --mode " ...
- vim模式下报错E37: No write since last change (add ! to override)
故障现象: 使用vim修改文件报错,系统提示如下: E37: No write since last change (add ! to override) 故障原因: 文件为只读文件,无法修改. 解决 ...
- Spring Boot(一):环境搭建,建立简单项目
一.基本环境搭建 1.下载IntelliJ IDEA :http://www.jetbrains.com/idea/ 2.拖到页面最下面下载旗舰版 3.新建项目 4.设置本地Maven 5.删除多于文 ...
- 常见查找算法(Java代码实现)
一,顺序查找 查找算法中顺序查找算是最简单的了,无论是有序的还是无序的都可以,只需要一个个对比即可,但其实效率很低.我们来看下代码 public static int search(int[] a, ...
- ThinkPHP 5 验证码
<div> <form action="{:url('index/check')}" method="post"> <img sr ...
- mysql 获取昨天数据 utc时间
# yzj邀请昨日数据 SELECT s.id, s.create_at, ch.id, ch.code AS channel, c.id , c.code AS custom, so.id, so. ...
- linux云计算面试知识汇总,文件共享--vsftpd秘籍
随着天气的升温快要步入夏天,紧随着面试季来喽,想知道Linux运维面试时都会被问到哪些问题吗?特整理出这些资料给大家参考学习,据说知道全部答案的人,月薪能过万,还不快快码下,以备后用! 今天小编将继续 ...
- linux ping: unknown host www.baidu.com
在虚拟机中使用CentOS6.5时,ping www.baidu.com出现报错信息:“ping: unknown hostwww.baidu.com”,虚拟机和物理机网络连接是NAT方式,物理机访问 ...
- apache----------在apache环境下安装https支持
1.安装mod_ssl yum install mod_ssl2.修改阿帕奇的配置文件开启3.防火墙要开启443端口4.要把三个证书上传到阿帕奇配置文件下.5.更新 httpd.conf 配置文件 ...