Hive

什么是Hive?

  • . 基于Hadoop的数据仓库解决方案
    • 将结构化的数据文件映射为数据库表
    • 提供类sql的查询语言HQL(Hive Query Language)
    • Hive让更多的人使用Hadoop
  • Hive成为Apache顶级项目
    • Hive始于2007年的Facebook
    • 官网:hive.apache.org

Hive的优势和特点

  1. 提供了一个简单的优化模型
  2. HQL类SQL语法,简化MR开发
  3. 支持在不同的计算框架上运行
  4. 支持在HDFS和HBase上临时查询数据
  5. 支持用户自定义函数、格式
  6. 成熟的JDBC和ODBC驱动程序,用于ETL和BI
  7. 稳定可靠(真实生产环境)的批处理
  8. 有庞大活跃的社区

Hive的发展里程碑和主流版本

  • Hive发展历史及版本
    • 07年8月 – 始于Facebook
    • 13年5月 – 0.11 Stinger Phase 1 ORC HiveServer2
    • 13年10月 – 0.12.0 Stinger Phase 2 - ORC improvement
    • 14年4月 – Hive 0.13.0 as Stinger Phase 3
    • 14年11月 – Hive 0.14.0
    • 15年2月 – Hive 1.0.0
    • 15年5月 – Hive 1.2.0
    • 16年2月 – Hive 2.0.0 (添加 HPLSQL, LLAP)
    • 16年6月 – Hive 2.1.0

Hive和MapReduce

  • 以下两块代码那个执行效率更快?
    9.15 Hive基础介绍
    9.15 Hive基础介绍
  • MapReduce执行效率更快,Hive开发效率更快

Hive元数据管理

  • 记录数据仓库中模型的定义、各层级间的映射关系
  • 存储在关系数据库中
    • 默认Derby, 轻量级内嵌SQL数据库
      • Derby非常适合测试和演示
      • 存储在.metastore_db目录中
    • 实际生产一般存储在MySQL中
      • 修改配置文件hive-site.xml
  • HCatalog
    • 将Hive元数据共享给其他应用程序

Hive体系架构
9.15 Hive基础介绍
Hive Interface - 命令窗口模式

  • 有两种工具:Beeline和Hive命令行(CLI)
  • 有两种模式:命令行模式和交互模式
  • 命令行模式
操作 HiveServer2 Beeline HiveServer1 CLI
Server Connection beeline –u <jdbcurl> -n <username> -p <password> hive –h <hostname> -p <port>
Help beeline -h or beeline --help hive -H
Run Query beeline -e <query in quote> beeline -f <query file name> hive -e <query in quote> hive -f <query file name>
Define Variable beeline --hivevar key=value hive --hivevar key=value

Hive Interface - 命令窗口模式

  • 交互模式
操作 HiveServer2 Beeline HiveServer1 CLI
Enter Mode beeline hive
Connect !connect <jdbcurl> N/A
List Tables !table show tables;
List Columns !column <table_name> desc table_name;
Save Result !record <file_name> !record N/A
Run Shell CMD !sh ls !ls;
Run DFS CMD dfs -ls dfs -ls ;
Run SQL File !run <file_name> source <file_name>;
Check Version !dbinfo !hive --version;
Quit Mode !quit quit;

Hive工具操作

  • 检查Hive服务是否已经正常启动

  • 使用Hive

    • hive
  • 使用beeline

    • 虚拟机里的URL

      • jdbc:hive2://localhost:10000/default
    • beeline -u “jdbc:hive2://localhost:10000/default”

Hive数据类型 - 原始类型

  • 类似于SQL数据类型
类型 示例 类型 示例
TINYINT 10Y SMALLINT 10S
INT 10 BIGINT 100L
FLOAT 1.342 DOUBLE 1.234
DECIMAL 3.14 BINARY 1010
BOOLEAN TRUE STRING ’Book’ or “Book”
CHAR 'YES’ or “YES” VARCHAR 'Book’ or “Book”
DATE '2013-01-31’ TIMESTAMP '2013-01-31 00:13:00.345’

Hive数据类型-复杂数据类型

  • ARRAY:存储的数据为相同类型
  • MAP:具有相同类型的键值对
  • STRUCT:封装了一组字段
类型 格式 定义 示例
ARRAY [‘Apple’,’Orange’,’Mongo’] ARRAY<\string> a[0] = ‘Apple’
MAP {‘A’:’Apple’,’O’:’Orange’} MAP<string, string> b[‘A’] = ‘Apple’
STRUCT {‘Apple’, 2} STRUCT<fruit:string, weight:int> c.weight = 2

Hive元数据结构

数据结构 描述 逻辑关系 物理存储(HDFS)
Database 数据库 表的集合 文件夹
Table 行数据的集合 文件夹
Partition 分区 用于分割数据 文件夹
Buckets 分桶 用于分布数据 文件
Row 行记录 文件中的行
Columns 列记录 每行中指定的位置
Views 视图 逻辑概念,可跨越多张表 不存储数据
Index 索引 记录统计数据信息 文件夹

相关文章:

  • 2021-06-26
  • 2021-07-15
  • 2021-12-02
  • 2021-08-29
  • 2021-06-25
猜你喜欢
  • 2021-12-06
  • 2021-09-20
  • 2022-01-16
  • 2021-06-27
  • 2021-05-16
  • 2021-08-17
相关资源
相似解决方案