<>一 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开源框架,批量数据的导入和导出
<>六 函数
函数大全 <https://www.jianshu.com/p/29e43fb6e95f>
<>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。配置方式可以随便搜一下。
热门工具 换一换