Impala和Hive之间的SQL差异
Impala的SQL语法遵循SQL-92标准,并且在内置功能等领域包括许多行业扩展。有关将SQL代码从各种数据库系统移植到Impala的一般讨论,请参见将SQL从其他数据库系统移植到Impala。

由于Impala和Hive共享相同的metastore数据库,并且它们的表经常互换使用,因此以下部分详细介绍了Impala和Hive之间的区别。

HiveQL功能在Impala中不可用
当前版本的Impala不支持您可能从HiveQL熟悉的以下SQL功能:

扩展机制,例如TRANSFORM,自定义文件格式或自定义SerDes。
该DATE数据类型。
XML函数。
从HiveQL某些集合函数:covar_pop,covar_samp, corr,percentile,percentile_approx, histogram_numeric,collect_set; Impala支持Impala集合函数中列出的集合函数集和Impala解析函数中列出的分析函数。
采样。
横向视图。在帕拉2.3和更高,帕拉支持在查询上复杂类型(STRUCT,ARRAY,或MAP),使用连接符号而不是EXPLODE()关键字。有关Impala对复杂类型的支持的详细信息,请参见复杂类型(仅Impala 2.3或更高版本)。
从Impala 1.2开始支持用户定义的函数(UDF)。有关 Impala UDF的完整详细信息,请参见用户定义函数(UDF)。
Impala支持用C ++编写的高性能UDF,以及重用某些基于Java的Hive UDF。

Impala支持标量UDF和用户定义的聚合函数(UDAF)。Impala当前不支持用户定义的表生成功能(UDTF)。

基于Java的UDF中仅支持Impala支持的列类型。

current_user()无法通过Impala从Java UDF调用 Hive 函数。

Impala当前不支持以下HiveQL语句:

ANALYZE TABLE(等效于Impala COMPUTE STATS)
DESCRIBE COLUMN
DESCRIBE DATABASE
EXPORT TABLE
IMPORT TABLE
SHOW TABLE EXTENDED
SHOW TBLPROPERTIES
SHOW INDEXES
SHOW COLUMNS
INSERT OVERWRITE DIRECTORY; 使用查询 或将查询结果具体化到与Impala表关联的HDFS目录中。 INSERT OVERWRITE table_nameCREATE TABLE AS SELECT
Impala serialization.null.format仅对TEXT表尊重table属性,而对Parquet和其他格式忽略该属性。Hive尊重serialization.null.format Parquet和其他格式的属性,并在扫描期间将匹配值转换为NULL。有关在Impala中使用table属性的信息,请参阅将文本数据文件与Impala表一起使用。

Impala和HiveQL功能之间的语义差异
本节介绍Impala和Hive具有相似功能(有时包括相同语法)的实例,但是这些功能的运行时语义有所不同。

安全:

Impala利用Apache Sentry授权框架,该框架提供了基于角色的细粒度访问控制,以防止未经授权的访问或篡改数据。

Hive的组件现在包括哨兵启用GRANT, REVOKE和CREATE/DROP ROLE语句。较早的Hive版本具有的特权系统GRANT和REVOKE语句,其主要目的是防止数据的意外删除,而不是一种防止恶意用户使用的安全机制。

Impala可以利用通过Hive GRANT和REVOKE语句设置的特权。Impala 在Impala 2.0及更高版本中具有自己的GRANT和REVOKE语句。有关Impala中授权的详细信息,请参阅Impala授权,包括如何使用metastore数据库中存储的特权从基于策略文件的原始特权模型切换到Sentry服务。

SQL语句和子句:

在某些情况下,Impala SQL语句的语义与HiveQL有所不同,它们使用类似的SQL语句和子句名称:

因帕拉使用不同的语法和查询提示名称,[SHUFFLE]而 [NOSHUFFLE]不是MapJoin或StreamJoin。有关Impala的详细信息,请参见 在Impala SELECT语句中加入。
因帕拉不公开的MapReduce的特定功能SORT BY,DISTRIBUTE BY或CLUSTER BY。
Impala不需要查询就包含FROM子句。
资料类型:

Impala支持一组有限的隐式强制转换。这可以帮助避免意外铸造行为产生的不良结果。
Impala不会在字符串和数字或布尔类型之间隐式转换。始终使用 CAST()这些转换。
当从较小或不太精确的类型转换为较大或更精确的类型时,Impala确实会在数字类型之间执行隐式强制转换。例如,黑斑羚将隐式转换 SMALLINT到BIGINT或FLOAT从,但转换 DOUBLE到FLOAT或INT以TINYINT 要求呼叫CAST()查询。
Impala确实执行从字符串到时间戳的隐式强制转换。Impala对于TIMESTAMP数据类型和from_unixtime()格式字符串具有一组有限的文字格式;有关详细信息,请参见TIMESTAMP数据类型。
有关所有类型的隐式和显式强制转换的完整详细信息,请参见数据类型;有关函数的详细信息,请参见Impala类型转换CAST()函数。

Impala不会使用本地时区来存储或解释时间戳,以避免意外的时区问题导致不希望的结果。时间戳相对于UTC进行存储和解释。对于Impala和Hive之间对类似名称的日期/时间函数的某些调用,此差异可能产生不同的结果。有关Impala函数的详细信息,请参见Impala日期和时间函数。请参阅TIMESTAMP数据类型,以获取有关Impala如何处理时区的讨论,以及在处理Parquet编码TIMESTAMP数据或在本地时区与UTC之间进行转换时,可用于使Impala与Hive行为更紧密匹配的配置选项。
Impala TIMESTAMP类型可以表示从1400-01-01到9999-12-31的日期。这与Hive日期范围(0000-01-01至9999-12-31)不同。
Impala不会将列溢出返回为NULL,因此客户可以像在NULL传统数据库系统中那样区分数据和溢出条件。Impala返回类型范围内的最大值或最小值。例如,有效值的 tinyint范围是-128到127。在Impala中,tinyint 值为-200的a返回-128而不是NULL。tinyint值为200的A 返回127。

其他功能:

Impala不提供虚拟列。
Impala不公开锁定。
Impala不公开某些配置属性。

Impala和Hive之间的SQL差异相关推荐

  1. oracle和hive之间关于sql的语法差异及转换

    1. oracle的(+) 改为hive左右连接 oracle (+)学习_cclovezbf的博客-CSDN博客最近工作需要将oracle的存储过程转化为hive的sql脚本.遇到很多不一样的地方, ...

  2. impala与hive标准差函数的差异

    因为以上差异,impala的标准差函数不支持配合移动计算的标准差数据. 详情待码

  3. impala和python_Impala和Hive之间有什么关系?

    除了共享hive的metastore之外没什么太大的关系. hive是Java写的,由Facebook开源,目的是将特定的SQL语句编译为MapReduce jar包扔给hadoop去执行,本质上是一 ...

  4. Impala与Hive的比较

    2019独角兽企业重金招聘Python工程师标准>>> 1. Impala架构        Impala是Cloudera在受到Google的Dremel启发下开发的实时交互SQL ...

  5. 大数据计算引擎:impala对比hive

    目录 Impala与Hive的异同 数据存储 元数据 SQL解释处理 执行计划: 数据流: 内存使用: 调度: 容错: 适用面: Impala相对于Hive所使用的优化技术 Impala的优缺点 Im ...

  6. Impala与Hive的关系

    Impala与Hive的关系 Impala与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面,但从客户端使用来看Impala与Hive有很多的共同之处,如数据表元数据.ODBC/J ...

  7. impala与hive的比较以及impala的有缺点

    最近读的几篇关于impala的文章,这篇良心不错:https://www.biaodianfu.com/impala.html(本文截取部分内容) Impala是Cloudera公司主导开发的新型查询 ...

  8. [转]impala操作hive数据实例

    https://blog.csdn.net/wiborgite/article/details/78813342 背景说明: 基于CHD quick VM环境,在一个VM中同时包含了HDFS.YARN ...

  9. impala操作hive数据实例

    背景说明: 基于CHD quick VM环境,在一个VM中同时包含了HDFS.YARN.HBase.Hive.Impala等组件. 本文将一个文本数据从HDFS加载到Hive,同步元数据后,在Impa ...

最新文章

  1. 织梦Cms二次开发出来的模块的导出成xml问题
  2. ASCX呼叫ASPX.CS的方法
  3. 鼠标移到某一行 某一行变色 鼠标移开恢复
  4. 【完结】如何掌握基于图像和视频的人脸表情识别,这9篇文章可以作为一个参考...
  5. 毕业后的五年拉开大家差距的原因在哪里?
  6. 一篇文章教你学会Java泛型
  7. 记-php的设计模式
  8. python 正则表达式判断字符串是否为回文_JS使用栈判断给定字符串是否是回文算法示例...
  9. 前端:JS/38/canvas状态的保存和恢复(canvas常用状态大全),canvas画布中图像的变形
  10. Docker上搭载Solr,重新编辑加载文件的相关命令
  11. 让孩子从小自信的28个方法
  12. WM_SIZING 使用说明
  13. VMware安装CentOS7以及CentOS官网下载自选镜像
  14. JAVA设计模式详解(四)----------适配器模式
  15. java的Lambda表达式理解
  16. elementui表格表头换行
  17. Oracle 压缩表与压缩表空间
  18. awg线径与电流_AWG_线径电流
  19. 二级建造师【管理】第一章:施工方的项目管理
  20. 【诺贝尔物理奖量子纠缠】启发:命由我作,福由我求

热门文章

  1. 中断门、陷阱门、任务段、任务门
  2. 灰狼算法Python
  3. 每周全球科技十大新闻(2019.8.5-8.11)
  4. python 定义字典键为变量_以变量为键的Python字典
  5. 可爱的 Python:Python中的文本处理
  6. 《鬼灭之刃 无限列车编》超越《哈尔移动城堡》《哈利波特》成史上第五位
  7. java星球动画制作_java 星球转动效果
  8. 高仿手机QQ音乐之——Android带进度条的开关
  9. 小米9android q测试版,小米9获得MIUI 10 9.8.8内测版更新:升级Android Q
  10. 浙江省高中信息技术python_浙江省新高中信息技术教材,将围绕Python进行并增加编程相关知识点...