• hive常用函数一


    Hive概念

    Hive最适合于数据仓库应用程序,使用该应用程序进行相关静态数据分析,不需要快速响应出结果,而数据本身不会发生频繁变化。

    Hdfs分布式文件系统限制了hive,使其不支持记录级别的更新、插入、删除。但是支持用户通过查询生成新表或者将查询结果导入文件中。

    Hive的查询延迟较高,且不支持事物。

    Hive不支持OLTP(联机事物处理),更接近为一个OLAP(连接分析技术)工具。

    大多数数据仓库应用程序是基于sql的关系型数据实现的。所以hive降低了这些应用程序移植到Hadoop上的障碍。

    Hive不仅仅提供了一个熟悉的sql的用户所熟悉的编程模型,还消除了大量通用的重复代码。

    当需要启动mapReduce任务时,hive本身是不会生成Java的mapReduce的算法程序的。相反Hive通过一个表示“job的执行计划”的xml文件驱动执行内置的原生的mapper和reducer模块。

    一、关系运算:

    1. 等值比较: =

                    语法:A=B

                    操作类型:所有基本类型

                    描述: 如果表达式A与表达式B相等,则为TRUE;否则为FALSE

                    举例:

                    hive> select 1 from lxw_dual where 1=1;

                    1

    2. 不等值比较: <>

                    语法: A <> B

    操作类型: 所有基本类型

    描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A与表达式B不相等,则为TRUE;否则为FALSE

    举例:

    hive> select 1 from lxw_dual where 1 <> 2;

    1

    3. 小于比较: <

                    语法: A < B

    操作类型: 所有基本类型

    描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A小于表达式B,则为TRUE;否则为FALSE

    举例:

    hive> select 1 from lxw_dual where 1 < 2;

    1

    4. 小于等于比较: <=

    语法: A <= B

    操作类型: 所有基本类型

    描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A小于或者等于表达式B,则为TRUE;否则为FALSE

    举例:

    hive> select 1 from lxw_dual where 1 <= 1;

    1

    5. 大于比较: >

    语法: A > B

    操作类型: 所有基本类型

    描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A大于表达式B,则为TRUE;否则为FALSE

    举例:

    hive> select 1 from lxw_dual where 2 > 1;

    1

    6. 大于等于比较: >=

    语法: A >= B

    操作类型: 所有基本类型

    描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A大于或者等于表达式B,则为TRUE;否则为FALSE

    举例:

    hive> select 1 from lxw_dual where 1 >= 1;

    1

    注意:String的比较要注意(常用的时间比较可以先to_date之后再比较)

    hive> select * from lxw_dual;

    OK

    2011111209 00:00:00     2011111209

    hive> select a,b,a<b,a>b,a=b from lxw_dual;

    2011111209 00:00:00     2011111209      false   true    false

    7. 空值判断: IS NULL

    语法: A IS NULL

    操作类型: 所有类型

    描述: 如果表达式A的值为NULL,则为TRUE;否则为FALSE

    举例:

    hive> select 1 from lxw_dual where null is null;

    1

    8. 非空判断: IS NOT NULL

    语法: A IS NOT NULL

    操作类型: 所有类型

    描述: 如果表达式A的值为NULL,则为FALSE;否则为TRUE

    举例:

    hive> select 1 from lxw_dual where 1 is not null;

    1

    9. LIKE比较: LIKE

    语法: A LIKE B

    操作类型: strings

    描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合表达式B   的正则语法,则为TRUE;否则为FALSE。B中字符”_”表示任意单个字符,而字符”%”表示任意数量的字符。

    举例:

    hive> select 1 from lxw_dual where 'football' like 'foot%';

    1

    hive> select 1 from lxw_dual where 'football' like 'foot____';

    1

    注意:否定比较时候用NOT A LIKE B

    hive> select 1 from lxw_dual where NOT 'football' like 'fff%';

    1

    10. JAVA的LIKE操作: RLIKE

    语法: A RLIKE B

    操作类型: strings

    描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合JAVA正则表达式B的正则语法,则为TRUE;否则为FALSE。

    举例:

    hive> select 1 from lxw_dual where 'footbar’ rlike '^f.*r$’;

    1

    注意:判断一个字符串是否全为数字:

    hive>select 1 from lxw_dual where '123456' rlike '^\d+$';

    1

    hive> select 1 from lxw_dual where '123456aa' rlike '^\d+$';

    11. REGEXP操作: REGEXP

    语法: A REGEXP B

    操作类型: strings

    描述: 功能与RLIKE相同

    举例:

    hive> select 1 from lxw_dual where 'footbar' REGEXP '^f.*r$';

    1

    二、数学运算:

    1. 加法操作: +

    语法: A + B

    操作类型:所有数值类型

    说明:返回A与B相加的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。比如,int + int 一般结果为int类型,而int + double 一般结果为double类型

    举例:

    hive> select 1 + 9 from lxw_dual;

    10

    hive> create table lxw_dual as select 1 + 1.2 from lxw_dual;

    hive> describe lxw_dual;

    _c0     double

    2. 减法操作: -

    语法: A – B

    操作类型:所有数值类型

    说明:返回A与B相减的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。比如,int – int 一般结果为int类型,而int – double 一般结果为double类型

    举例:

    hive> select 10 – 5 from lxw_dual;

    5

    hive> create table lxw_dual as select 5.6 – 4 from lxw_dual;

    hive> describe lxw_dual;

    _c0     double

    3. 乘法操作: *

    语法: A * B

    操作类型:所有数值类型

    说明:返回A与B相乘的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。注意,如果A乘以B的结果超过默认结果类型的数值范围,则需要通过cast将结果转换成范围更大的数值类型

    举例:

    hive> select 40 * 5 from lxw_dual;

    200

    4. 除法操作: /

    语法: A / B

    操作类型:所有数值类型

    说明:返回A除以B的结果。结果的数值类型为double

    举例:

    hive> select 40 / 5 from lxw_dual;

    8.0

    注意:hive中最高精度的数据类型是double,只精确到小数点后16位,在做除法运算的时候要特别注意

    hive>select ceil(28.0/6.999999999999999999999) from lxw_dual limit 1;   

    结果为4

    hive>select ceil(28.0/6.99999999999999) from lxw_dual limit 1;          

    结果为5

    5. 取余操作: %

    语法: A % B

    操作类型:所有数值类型

    说明:返回A除以B的余数。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。

    举例:

    hive> select 41 % 5 from lxw_dual;

    1

    hive> select 8.4 % 4 from lxw_dual;

    0.40000000000000036

    注意:精度在hive中是个很大的问题,类似这样的操作最好通过round指定精度

    hive> select round(8.4 % 4 , 2) from lxw_dual;

    0.4

    6. 位与操作: &

    语法: A & B

    操作类型:所有数值类型

    说明:返回A和B按位进行与操作的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。

    举例:

    hive> select 4 & 8 from lxw_dual;

    0

    hive> select 6 & 4 from lxw_dual;

    4

    7. 位或操作: |

    语法: A | B

    操作类型:所有数值类型

    说明:返回A和B按位进行或操作的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。

    举例:

    hive> select 4 | 8 from lxw_dual;

    12

    hive> select 6 | 8 from lxw_dual;

    14

    8. 位异或操作: ^

    语法: A ^ B

    操作类型:所有数值类型

    说明:返回A和B按位进行异或操作的结果。结果的数值类型等于A的类型和B的类型的最小父类型(详见数据类型的继承关系)。

    举例:

    hive> select 4 ^ 8 from lxw_dual;

    12

    hive> select 6 ^ 4 from lxw_dual;

    2

    9.位取反操作: ~

    语法: ~A

    操作类型:所有数值类型

    说明:返回A按位取反操作的结果。结果的数值类型等于A的类型。

    举例:

    hive> select ~6 from lxw_dual;

    -7

    hive> select ~4 from lxw_dual;

    -5

  • 相关阅读:
    张一鸣:平常心做非常事|字节跳动9周年演讲全文
    实验二:分词
    helm部署EFK收集应用日志,ingress-nginx日志解析。
    Terraform
    Windows 11 下载
    Kubernetes Pod中容器的Liveness、Readiness和Startup探针
    Kubernetes使用Keda进行弹性伸缩
    K8s 部署 Prometheus + Grafana
    CSDN & 博客园
    zipkin,pinpoint和skywalking对比
  • 原文地址:https://www.cnblogs.com/shaozhiqi/p/11534426.html
Copyright © 2020-2023  润新知