大数据-Hive(三)
程序员文章站
2022-05-01 12:14:19
...
大数据-Hive(三)
Hive的交互方式
- Hive的交互方式主要有三种
- 使用Hive之前:
- 先启动hadoop集群:因为hql语句会被编译成MR任务提交到集群运行;hive表数据一般存储在HDFS上。
- mysql服务:因为对hive操作过程中,需要访问mysql中存储元数据的库及表。
Hive交互shell
在任意路径运行hive
[aaa@qq.com ~]$ hive
Hive JDBC服务
- 启动hiveserver2服务,前台启动与后台启动方式二选一
- 前台启动
[aaa@qq.com ~]$ hive --service hiveserver2
- 后台启动
[aaa@qq.com ~]$ nohup hive --service hiveserver2 &
- beeline连接hiveserver2服务
若是前台启动hiveserver2,请再开启一个新会话窗口,然后使用beeline连接hive
[aaa@qq.com ~]$ beeline
beeline> !connect jdbc:hive2://node03:10000
用户名hadoop,密码为空即可。
- 帮助信息
0: jdbc:hive2://node03:10000> help
- 退出
0: jdbc:hive2://node03:10000> !quit
Hive的命
hive -e hql语句
-
使用 –e 参数来直接执行hql语句
[aaa@qq.com ~]$ hive -e "show databases"
hive -f sql文件
使用 –f参数执行包含hql语句的文件
node03执行以下命令准备hive执行脚本
[aaa@qq.com ~]$ cd /kkb/install/
[aaa@qq.com install]$ vim hive.sql
文件内容如下
create database if not exists myhive;
通过以下命令来执行我们的hive脚本
[aaa@qq.com install]$ hive -f /kkb/install/hive.sql
查看效果,成功执行hql语句,创建myhive数据库。
Hive的数据类型
基本数据类型
类型名称 | 描述 | 举例 |
boolean | true/false | true |
tinyint | 1字节的有符号整数 | 1 |
smallint | 2字节的有符号整数 | 1 |
int | 4字节的有符号整数 | 1 |
bigint | 8字节的有符号整数 | 1 |
float | 4字节的有符号整数 | 1.0 |
double | 8字节的有符号整数 | 1.0 |
string | 字符串(不设长度) | "abc" |
varchar | 字符串(1-65355长度,超长截断) | "abc" |
timestamp | 时间戳 | 1563157873 |
date | 日期 | 20190715 |
复合数据类
类型名称 | 描述 | 举例 |
array | 一组有序的字段,字段类型必须相同 array(元素1,元素2) | Array(1,2,3) |
map | 一组无序的键值对 map(k1,v1,k2,v2) | Map(‘a’,1,'b',2) |
struct | 一组命名的字段,字段类型可以不同 struct(元素1,元素2) | Struct('a',1,2,0) |
-
array类型的字段的元素访问方式
-
通过下标获取元素,下标从0开始
-
如获取第一个元素
-
array[0]
-
-
-
map类型字段的元素访问方式
-
通过键获取值
-
如获取a这个key对应的value
-
map['a']
-
-
-
struct类型字段的元素获取方式
-
定义一个字段c的类型为struct{a int, b string}
-
获取a和b的值
-
使用c.a 和c.b 获取其中的元素值
-
-
这里可以把这种类型看成是一个对象
-
-
示例:创建一张表,包含了array、map、struct类型的字段
create table complex(
col1 array<int>,
col2 map<string,int>,
col3 struct<a:string,b:int,c:double>
)