Hive------内置运算符,内置函数,内置聚合函数,内置表生成函数,自定义函数,hive分桶,

本文介绍了Hive的JDBC连接方式,展示了如何执行SQL查询。此外,讲解了Hive的关系运算符、算术运算符、逻辑运算符及复杂类型函数的使用,并提到了内置函数如数学函数、收集函数和条件函数。文章还详细阐述了Hive的分桶概念,包括如何开启分桶、加载数据以及进行分桶抽样查询。最后,LateralView的使用被提及,它解决了UDTF查询中的限制问题。
摘要由CSDN通过智能技术生成

1.Hive JDBC

public class Hive01 {
    private static String driverName="org.apache.hive.jdbc.HiveDriver";

    public static void main(String[] args) throws SQLException {
        try {
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.exit(1);
        }
        Connection conn= DriverManager.getConnection("jdbc:hive2://hadoop102:1000/default","root","333");
        Statement statement=conn.createStatement() ;
        String sql="select * from student";
        ResultSet res=statement.executeQuery(sql);
        while(res.next()){
            System.out.println(res.getString(1));
        }
    }
}

2.内置运算符

(1)关系运算符(where子句中使用)

A=Bsql不使用"=="
A<>B如果A不等于B返回TRUE,否则返回FALSE。如果A或B值为”NULL”,结果返回”NULL”。
A IS NULL
A IS NOT NULL
A LIKE B如 果A或B值为”NULL”,结果返回”NULL”。字符串中 的””代表任一字符,”%”则代表多个任意字符。例如: (‘foobar’ like ‘foo’)返回FALSE,( ‘foobar’ like ‘foo _ _’或者 ‘foobar’ like ‘foo%’)则返回TURE

(2)算术运算符
加减乘除,取余,位运算

(3)逻辑运算符(A、B是两个语句)

A && BA和B同时正确时,返回TRUE,否则FALSE。如果A或B值为NULL,返回NULL。
A竖线BA或B正确,或两者同时正确返返回TRUE,否则FALSE。如果A和B值同时为NULL,返回NULL。
!A如果A为NULL或错误的时候返回TURE,否则返回FALSE。

(4)复杂类型函数

map通过指定的键值对,创建一个map
struct创建一个结构
array创建一个数组

在这里插入图片描述(5)对复杂函数类型操作

A[n]返回数组A的第n个元素
M[key]返回关键值对应的值
S.x返回字符串在结构s的位置

在这里插入图片描述
使用: 1) select col1[1] from complex
2) select col2[1] from complex
3) select col3.a,col3.b from complex

3.内置函数
(1)数学函数

在这里插入图片描述在这里插入图片描述在这里插入图片描述使用:select round(3.1415926) from dual
输出 3.0

(2)收集函数

在这里插入图片描述
属性作为key,统计该属性有几个数值

(3)条件函数

在这里插入图片描述
例子:
在这里插入图片描述
(4)字符函数

在这里插入图片描述在这里插入图片描述在这里插入图片描述
4.内置聚合函数

在这里插入图片描述在这里插入图片描述5.内置表生成函数

在这里插入图片描述
6.hive分桶概述

分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。
由列的哈希值除以桶的个数来决定每条数据划分在哪个桶中。
6.1开启分桶
set hive.enforce.bucketing=true;
6.2 分桶操作
6.2.1分桶表中加载数据

insert into table bucket_table select columns from tbl;
insert overwrite table bucket_table select columns from tbl;

6.2.2分桶表抽样查询

select * from bucket_table tablesample(bucket 1 out of 4 on columns);

TABLESAMPLE语法:
tablesample(bucket x out of y on columnname)
x:表示从哪个bucket开始抽取数据
y:必须为该表总bucket数的倍数或因子

7.Hive Lateral view

Lateral View用于和UDTF函数(explode、split)结合来使用。
主要解决在select使用UDTF做查询过程中,查询只能包含单个UDTF,不能包含其他字段、以及多个UDTF的问题

语法:
LATERAL VIEW udtf函数 表名 AS 字段名
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值