将表达式的值转换为任何其他类型
如果表达式值的类型无法转换为目标类型,则结果为Null
返回与表达式对应的数据类型的名称
将表达式与一个或多个可能的值进行比较,并在找到匹配项或未找到时返回相应的结果
测试一系列表达式是否为真,并返回第一个真实表达式的相应结果
返回第一个不为空的值,如果所有参数都是空值则为空
将表达式与一个或多个可能的值进行比较,并在找到或未找到匹配项时返回相应的结果
判断表达式并根据结果是true,false还是返回相应的结果。
判断值是否为空,如果为空则返回对应结构,否则返回原来的值
测试一个布尔表达式真假,真则返回true,假则返回false
测试一个布尔表达式真假,真则返回false,假则返回true
测试一个布尔表达式真假,真则返回true,假则返回false
测试一个布尔表达式真假,真则返回false,假则返回true
测试一个表达式(任何类型)是否空值,是则返回true
如果两个指定的参数是相等的返回空值。如果不相等,则返回expr1的值
返回空值 如果数字表达式的计算结果为0,则返回表达式的结果。
测试一个表达式(任何类型)是否为null
测试表达式是否空值,如果不是,则返回表达式结果值
如果数值表达式的计算结果为0,则返回0否则返回表达式的结果
随机生成UUID
非标量数据类型如 maps, arrays, structs可扩展机制(Extensibility mechanisms)例如 TRANSFORM, 自定义文件格式, 或自定义 SerDeszImpala 1.2
XML 和 JSON 函数
HiveQL 中的某些聚合函数: variance, var_pop, var_samp, stddev_pop, stddev_samp, covar_pop, covar_samp, corr, percentile, percentile_approx, histogram_numeric,collect_setImpala 支持这些聚合函数: MAX(), MIN(), SUM(), AVG(), COUNT()
用户定义产生表函数(User Defined Table Generating Functions,UDTFs)
采样
Lateral views
授权功能如角色
一个查询中多个 DISTINCT 子句(Multiple DISTINCT clauses per query)
Impala 当前不支持这些 HiveQL 语句:
ANALYZE TABLE (在 Impala 有等价的 COMPUTE STATS)
DESCRIBE COLUMN
DESCRIBE DATABASE
EXPORT TABLE
IMPORT TABLE
SHOW PARTITIONS
SHOW TABLE EXTENDED
SHOW INDEXES
SHOW COLUMNS
许多情况下 Impala 与 Hive 中使用相似的 SQL 语句和子句的语义不同:
Impala 使用不同的语法和查询提示(query hints)名称。参见 Joins
Impala 在执行 SORT BY, DISTRIBUTE BY, CLUSTER BY 时不使用 MapReduce(Impala does not expose MapReduce specific features of SORT BY, DISTRIBUTE BY, or CLUSTER BY)
Impala 查询中可以不需要 FROM 子句
Impala 支持有限的几组隐式类型转换。这可以避免从未预期的转换行为导致未知的结果
Impala 在 string 和 numeric 或 Boolean 之间不进行隐式转换
Impala 在 numeric 或 string 到 timestamp 之间不进行隐式转换(Impala does perform implicit casts among the numeric types or from string to timestamp)
Impala 不使用本地时区保存时间戳,以避免超出预期的时区导致的未知的结果。时间戳都是相对于 GMT(格林尼治时间) 存储的
就像在传统数据库系统中那样,Impala 不会为溢出列(column overflows)返回 NULL,以便客户可以区分 NULL 数据和溢出条件。Impala 返回该数据类型的最大或最小值。例如,tinyint 的有效值范围是 -128 到 127。在 Impala 里,设置 tinyint 为 -200 则返回值是 -128 而不是 NULL。设置 tinyint 为 200 实际是 127。
Impala 不提供虚拟列(virtual columns)
Impala 没有公开锁(Impala does not expose locking)
Impala 没有公开一些配置属性(Impala does not expose some configuration properties)
Impala的SQL解析与执行计划生成部分是由impala-frontend(Java)实现的,监听端口是21000。用户通过Beeswax接口BeeswaxService.query()提交一个请求,在impalad端的处理逻辑是由void ImpalaServer::query(QueryHandle&query_handle, const Query&query)这个函数(在impala-beeswax-server.cc中实现)完成的。在impala中一条SQL语句先后经历BeeswaxService.Query->TClientRequest->TExecRequest,最后把TExecRequest交由impala-coordinator分发给多个backend处理。本文主要讲一条SQL语句是怎么一步一步变成TExecRequest的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)