Hive的基本概念
hive是基于hadoop的数据仓库解决方案,是为了推广hadoop而产生,它可以将结构化的数据映射为数据表。
Hive的优势与特点
Hive客户端操作
有两种客户端工具:Beeline和Hive命令行(CLI)
有两种模式:
- 命令行模式
- 交互模式
Hive数据类型
#数据类型
#数据类型 java mysql hive
#字符串 String char(n)/varchar(n)/text/... string/varchar(65536)/char(255)
#字符 char
#整数 byte/short/int/long smallint/int(n)/bigint(n) smallint/int/bigint
#小数 float/double/BigDecial float/double/money/real float/double
numeric(m,n)/decimal(m,n) decimal(38,18)
#布尔 boolean bit boolean
#日期 java.util.Date date/datetime/timestamp date/timestamp
#列表 HashSet set('V1','V2','V3',...) array<data_type>
#结构体 struct<col_name:data_type,...>
#键值 map<key_type,value_type>
#符合类型 uniontype<data_type,...>
Hive数据库和表操作
- Hive数据结构
数据结构 描述 逻辑关系 物理存储(HDFS)
Database 数据库 表的集合 文件夹
Table 表 行数据的集合 文件夹
Partition 分区 用于分割数据 文件夹
Buckets 分桶 用于分布数据 文件
Row 行 行记录 文件中的行
columns 列 列记录 每行中指定的位置
Views 视图 逻辑概念,可跨越多张表 不存储数据
lndex 索引 记录统计数据信息 文件夹
- 数据库
create database if not exists myhivebook; --创建数据库myhivebook
use myhivebook; --进入数据库myhivebook
show databases; --查看数据库
describe database default; -- 可以查看数据库更多的描述信息
alter database myhivebook set owner user dayongd; --修改数据库的使用者
drop database if exists myhivebook cascade; --删除数据库myhivebook;
- 建表语言解析
create external table if not exists employee_external ( --if not exists可选,如果表存在,则忽略
name string,
work_place array<string>,
sex_age struct<sex:string,age:int>, --列出所有列和数据类型
skills_score map<string,int>,
depart_title map<string,array<string>>
)
comment 'This is an external table' --comment可选
row format delimited
fields terminated by '|' --如何分隔列(字段)
collection items terminated by ','
map keys terminated by ':'
lines terminated by '\n'
stored as textfile --文件存储格式
location '/kb10/employee'; --指定数据存储路径(HDFS)
hdfs dfs -put xxxxxx.log /kb10/employee --上传数据
-
分隔符
在使用hive的时候,分隔符是必不可少的,当学习的时候使用的都是常规分隔符,比如:逗号“,”、竖线“|”等,这些 键盘上都可以直接输入的字符,但是这些字符只要是键盘上的,在针对复杂的业务逻辑的时候,都会失效。比如你 有一个备注字段,这个字段允许用户输入输入键盘上的任何