1、Hive基础
Hive不支持记录级别的更新、插入或者删除操作。不支持OLTP(联机事务处理),更接近OLAP(联机分析技术)工具。但由于Hive查询延时严重,需要使用NoSQL,如Hbase或Cassandra。
一般使用Hive可以通过CLI(命令行界面,用hive来表示),也可以用图形用户界面,如Karmasphere,Cloudera,Hue和Qubole提供的“Hive即服务”。
元数据:Metastore是一个独立的关系型数据库(通常是一个MySQL实例),Hive会在其中保存表模式和其他系统元数据。
Hive组件
- hive:命令行界面
- Thrift服务:可远程访问其他进程,也可以通过JODB和ODBC访问Hive
- metastoreservice:元数据服务,默认会使用Hive内置Derby SQL服务器。集群常用MySQL。可供多客户端使用
- HWI:Hive网页界面,可远程访问Hive服务
- conf:该目录下存放了Hive的配置文件
变量和属性
--define key=value和--hivevar key=value是等价的。Hive会将这些键值对放到hivevar命名空间。Hive还有三种内置命名空间:hiveconf、system、env。
- hivevar:可读可写,用户自定义变量
- hiveconf:可读可写,Hive相关的配置属性
- system:可读可写,Java定义的配置属性
- env:只可读,Shell/bash定义的环境变量
例子:
# 进入Hive,读取变量HOME
hive>set env:HOME;
hive --define foo=bar
hive>set foo; # 返回bar
hive>set hivevar:foo; # 读取设置信息
hive>set hivevar:foo=bar2; # 重新赋值
# 该命令执行完成会输出内容,但不会进入hive -e
hive -e "select * from mytable limit 3";
# 可以把hql语句存放到文件中,直接执行文件。以下两个命令效果等同 -f
hive -f /path/to/file/withqueries.hql
hive>source /path/to/file/withqueries.hql;
在hive使用shell命令
#命令前加!
hive> ! pwd;
在hive中使用Hadoop命令
# 将hdfs关键字去掉即可 hdfs dfs -ls /home
hive>dfs -ls /home;
在Hive的HOME目录下有.hiverc文件,可以设置系统属性,如在hive CLI输出时显示字段名,可以设置set hive.cli.print.header=true;
2、数据定义
HiveQL跟MySQL很接近,直接进入正文。以下命令基本都在hive中执行。
2.1 数据库
-- 创建数据库
create database if not exists mydb;
--

本文介绍了Hive的基础知识,强调其不支持OLTP,更适合OLAP。讲解了Hive的元数据、组件及变量属性。重点讨论了数据定义,包括管理表、外部表、分区表的创建与管理,以及删除和修改表的操作。HiveQL语法接近MySQL,对于大型数据集,分区能提升查询效率。删除管理表会删除数据,而外部表仅删除元数据。
最低0.47元/天 解锁文章
1147

被折叠的 条评论
为什么被折叠?



