欢迎投稿

今日深度:

Hive,

Hive,


目录

 

函数

窗口函数

普通函数

Tips

空字符串和Null的问题

普通tips


函数

窗口函数

 

普通函数

Tips

空字符串和Null的问题

 

普通tips

  • Hive不支持记录级别的更新、插入或者删除操作。但是用户可以通过查询生成新表或者将查询结果导入到文件中。

  • 关键字(date, sort)等以及下划线开头的列名需用反引号引用。比如'_C_GA_utmz_utmcmd','date'。

  • hive中区分大小写,hive中IOS和ios不 相等。

  • 目前hive子查询只支持from。

  • hive的union all不能有最外层的union all,并且union all的各字段类型必须相同。

  • 分清楚`反引号和‘单引号的区别。
    反引号一般在Esc键的下方,和~在一起。它是为了区分MySQL的保留字与普通字符而引入的符号。
    create table desc 报错
    create table `desc` 成功
    一般我们建表时都会将表名,库名 都加上反引号来保证语句的执行度。字段名也可以加上

  • 外部表 (EXTENAL TABLE)
    因为表是外部的,所以Hive并非认为其完全拥有这份数据。因此,删除该表不会删掉这份数据就,不过描述的元数据信息会被删除掉。有些HQL语法结构并不适用外部表。

  • strict严格模式
    strict模式如果对分区表进行查询而WHERE子句中没有加分区过滤的话,将会禁止提交这个任务。

    代码块

    SQL

    set hive.mapred.mode=nonstrict;

     

  • WHERE语句
    不能在WHERE语句中使用列别名。不过,我们可以使用一个嵌套的SELECT语句。

  • Hive优化
    最大表放到最后面,hive将前面的表缓存,然后扫描到最后那个表进行计算。

  • Bitmap(位图索引)
    如果索引列只有固定的几个值,那么就可以采用位图索引来加速查询。利用位图索引可以方便的进行AND/OR/XOR(异或)等各类计算。
    位图索引适合只有几个固定值的列,如性别、婚姻状况、行政区等等,而身份证这种类型不适合用位图索引。
    位图索引适合静态数据,而不适合索引频繁更新的列。

  • JVM重用
    JVM重用是Hadoop调优参数的内容,其对Hive的性能具有非常大的影响,特别是对于很难避免小文件的场景或task特别多的场景,这类场景大多数执行时间都很短。
    JVM重用可以使得JVM实例在同一个job中重新使用N次。
    缺点是开启JVM重用将会一直占用使用到的task插槽,一边进行重用,直到任务完成后才能释放。

  • Hive动态分区
    静态分区与动态分区的主要区别在于静态分区是手动指定的,而动态分区是通过数据来进行判断。详细来说,静态分区的列是在编译时期,通过用户传递来决定的;动态分区只有在SQL执行时才能决定。

  • UDF 和 UDTF
    尽管UDF可用来返回array(数组)和structure(结构体),但是它们无法返回多列或多行。用户自定义表生成函数(或简称UDTF)通过提供有8个可以返回多列甚至多行的程序接口来满足这个需求。

 

www.htsjk.Com true http://www.htsjk.com/hive/27807.html NewsArticle Hive, 目录   函数 窗口函数 普通函数 Tips 空字符串和Null的问题 普通tips 函数 窗口函数   普通函数 Tips 空字符串和Null的问题   普通tips Hive不支持记录级别的更新、插入或者删除操作。...
相关文章
    暂无相关文章
评论暂时关闭