Hive基础(1)
Hive的HQL(2)
1. Hive并不是分布式的,它独立于机器之外,类似于Hadoop的客户端。
2. 元数据和数据的区别,前者如表名、列名、字段名等。
3. Hive的三种安装方式
- 内嵌模式,元数据服务和Hive服务运行在同一个JVM中,同时使用内嵌的Derby数据库作为元数据存储,该模式只能支持同时最多一个用户打开Hive会话。
- 本地模式,元数据服务和Hive服务运行在同一个JVM中,采用了外置的MySQL作为元数据存储,该种方式支持多个用户同时访问Hive。
- 远程模式,元数据服务和Hive服务运行在不同的进程内,这样做的好处是,数据库层可以完全地置于防火墙之后,客户端则不需要数据库验证。
- 推荐,生产环境中,使用本地模式、远程模式。
4. Hive不支持行级别的更新、插入或者删除操作,并且不支持事物。Hive不能做OLTP的“联机”部分,所以对Hive更适合离线计算,对于实时性要求很高的可以选择HBase或者Impala。
5. Hive和关系型数据库的区别
compare | Hive | RMDBS |
---|---|---|
查询语言 | HQL | SQL |
数据存储位置 | HDFS | Raw Device或者Local FS |
数据格式 | 用户定义 | 系统决定 |
数据更新 | 不支持 | 支持 |
索引 | 无 | 有 |
执行 | MapReduce | Executor |
执行延迟 | 高 | 低 |
可扩展性 | 高 | 低 |
数据规模 | 大 | 小 |
6. Hive的数据类型与存储格式
- 数据类型
- 基本数据类型:整型、浮点型、布尔型等
- 复杂数据类型(集合):STRUCT、MAP、ARRAY
- 存储格式
- TEXTFILE(default)
- 不压缩、磁盘开销大、数据解析开销大
- SEQUENCEFILE
- 使用方便、可分割、可压缩、按行切分
- RCFILE
- 行列存储相结合,首先,将数据按行分块,保证同一条记录在一个块上,避免读一条记录需要读取多个块。其次,块上的数据按照列式存储,有利于数据压缩和快速地进行行列存取,也就是“先按水平划分再按垂直划分”
- 自定义
- 用户可通过实现InputFormat和OutputFormat来自定义输入输出格式。