【大数据】Hive SQL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cheidou123/article/details/85556297

一 hive三种部署方式

1.嵌入模式,元数据存在本地deby,只能创建一个连接
2.单用户模式,存到mysql,mysql和hive运行在同一个机器上
3.远程服务器模式,mysql和hive运行在不同机器上,适用于生产模式

二 hive当中所支持的数据类型

1.基本类型

tinyint/smallint/int/bigint:整数类型
float/double:浮点数类型

2.复杂类型

Array 我们也要给数组元素指定类型
Map 和java的map集合是一个道理,map可以和array一起使用的。
Struct 可以包含不同数据类型的元素,和数组的不同是它可以不同的数据类型

3.时间类型

Date类型 日期 YYYY-MM-DD
Timestamp类型 存储的时间是一个偏移量,和mysql一样。long类型

三 创建表

1.创建表的三种方式
直接建表法 只创建表结构,之后加载数据。
查询建表法 CREATE TABLE tbl2 as SELECT … 有表结构也有数据。
like建表法 CREATE TABLE tbl3 like tbl4 只有表结构没有数据。

四 hive表分类

1.内部表

删除内部表,删除表元数据和数据

hive> create table fz
    > (id int,name string,age int,tel string)
    > ROW FORMAT DELIMITED
    > FIELDS TERMINATED BY ','
    > STORED AS TEXTFILE;
2.外部表

删除外部表,删除元数据,不删除数据

hive> create external table fz_external_table(id int,name string,age int,tel string)
    > ROW FORMAT DELIMITED
    > FIELDS TERMINATED BY ','
    > STORED AS TEXTFILE
    > location '/user/hive/external/fz_external_table';

两个关键点:external关键字和location,location可以不加,不加的话就是默认位置

3.分区表

hive分区,举个栗子,加入按天分区,每天产生的日志存储在对应每一天的目录里面。
也可以按照业务类型分区,加入我们按性别分区,
记住: 分区字段不能在表的列名里面。

4.桶表

对数据进行hash取值,我们可以对学生名字进行hash运算分组,然后存到对应的桶里。
create table xxxx clustered by (对应的字段) into N buckets;
到N个桶里。

5.视图

它是一个虚表
操作视图和操作表的方式是完全一样的。
视图建立在已经有的表的基础上。
create view XXX as select …
视图最大的优点是简化查询。
视图是不存数据的,它的数据来源于依赖表。

五 数据导入

1.load

load data local inpath 路径 into table XX; local指的是我们操作系统的文件。这里我们要注意表的分隔符和文件的分隔符是否一致。
这个路径也可以是目录,可以覆盖原来的数据。
xx/ 如果要覆盖 overwrite into table XX;
如果将HDFS文件导入到HIVE中。
所以我们不用写local
load data inpath 路径 into table XX;
如果我们导入分区,我们先建好分区表,
load data local inpath 路径 into table 表 parition (列名 = ‘X’);

2.sqoop

apache开源框架,批量数据的导入和导出

六 函数

函数大全

1.内置函数
1.1数学函数:round ceil floor 和java一样。
1.2字符函数

length 长度 包含空格。
trim 去掉前后空格

1.3收集函数

size(map<1,‘tom’,2,‘mary’>)

1.4转换函数

转换数据类型

1.5日期函数

to_date 返回一个字符串日期的部分,不包含时间

1.6条件函数

case when

1.7聚合函数

count,sum

2.自定义函数

创建java类继承udf,然后重载evaluate,注意要用hadoop认识的类型,string转成text
把程序打包到目标机器上
进入hive客户端添加jar包
在hive客户端创建临时函数。

七 表连接

表连接也是转换成mapreduce
等值连接
不等值连接
外连接(左连接,右外链接)
自连接
通过表的别名,将一张表改造成多张。

八 操作hive

1.jdbc操作hive

获取连接
创建HQL环境
执行HQL
处理结果
释放资源

在工程先加上jar文件。然后和mysql jdbc一样的。

2.thirft操作hive
3.hue操作hive

基于soclet,连接服务器,基本不使用。

九 其它

1.fetch task

开启这个之后,简单查询,没有函数,没有排序,就不会创建mapreduce。配置方式可以随便搜一下。

没有更多推荐了,返回首页