hive的数据类型:

Hive表中的列支持以下基本数据类型:

  • integers(整型) : TINYINT:1字节的有符号整数; SMALLINT:2字节的有符号整数; INT:4字节的有符号整数; BIGINT:8字节的有符号整数
  • Boolean(布尔型) : BOOLEAN:TRUE/FALSE
  • Floating point numbers(浮点型) : FLOAT:单精度浮点型;
    DOUBLE:双精度浮点型
  • Fixed point numbers(定点数): DECIMAL:用户自定义精度定点数,比如 DECIMAL(7,2)
  • String types(字符串): STRING:指定字符集的字符序列; VARCHAR:具有最大长度限制的字符序列; CHAR:固定长度的字符序列;
  • Date and time types(日期时间类型): TIMESTAMP:时间戳; TIMESTAMP WITH LOCAL TIME ZONE:时间戳,纳秒精度; DATE:日期类型
  • Binary types(二进制类型): BINARY:字节序列

注:TIMESTAMP和TIMESTAMP WITH LOCAL TIME ZONE的区别如下: TIMESTAMP WITH LOCAL TIME ZONE:用户提交TIMESTAMP给数据库时,会被转换成数据库所在的时区来保存。查询时,则按照查询客户端的不同,转换为查询客户端所在时区的时间。 TIMESTAMP :提交的时间按照原始时间保存,查询时,也不做任何转换。

Hive的数据都是存储在HDFS上的,默认有一个根目录,在Hive-site.xml中可以进行配置数据的存储路径。Hive数据模型的含义是,描述Hive组织、管理和操作数据的方式。Hive包含如下4种数据模型:

Mysql中默认数据库是default,用户可以创建不同的database,在database下也可以创建不同的表。Hive也可以分为不同的数据(仓)库,和传统数据库保持一致。在传统数仓中创建database。默认的数据库也是defaultHive中的库相当于关系数据库中的命名空间,它的作用是将用户和数据库的表进行隔离。

Hive中的表所对应的数据是存储在HDFS中,而表相关的元数据是存储在关系数据库中。Hive中的表分为内部表和外部表两种类型,两者的区别在于数据的访问和删除:

  • 内部表的加载数据和创建表的过程是分开的,在加载数据时,实际数据会被移动到数仓目录中,之后对数据的访问是在数仓目录实现。而外部表加载数据和创建表是同一个过程,对数据的访问是读取HDFS中的数据;
  • 内部表删除时,因为数据移动到了数仓目录中,因此删除表时,表中数据和元数据会被同时删除。外部表因为数据还在HDFS中,删除表时并不影响数据。
  • 创建表时不做任何指定,默认创建的就是内部表。想要创建外部表,则需要使用External进行修饰

复杂类型:

TRUCT

类似于对象,是字段的集合,字段的类型可以不同,可以使用名称.字段名方式进行访问

STRUCT('xiaoming', 12 , '2018-12-12')

MAP

键值对的集合,可以使用名称[key]的方式访问对应的值

map('a', 1, 'b', 2)

ARRAY

数组是一组具有相同类型和名称的变量的集合,可以使用名称[index]访问对应的值

ARRAY('a', 'b', 'c', 'd')

hive语句操作:

数据库的语法操作: 

create database if not exists myhivebook; 

use myhivebook; 

show databases; 

describe database default; --more details than ’show’, such as location 

alter database myhivebook set owner user zs;

--级联删除,如果数据库下面有表的话,也可以删除 

drop database if exists myhivebook cascade;
hive建表语句:

CREATE EXTERNAL TABLE IF NOT EXISTS employee_external ( 

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' 

ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' 

COLLECTION ITEMS TERMINATED BY ',' 

MAP KEYS TERMINATED BY ':' 

STORED AS TEXTFILE 

LOCATION '/user/data/employee_data/';

--查看表结构 

desc table 

desc formatted table 

show create table