hive初探2_数据模型

1、hive数据类型

基本数据类型:tinyint、smallint、int、bigint、float、double、boolean、string

复合数据类型:

array:一段有序字段,字段的类型必须相同

map:一组无序的健/值对,健的类型必须是原子类型

struct:一组命名的字段,类型可以不同

复杂数据类型用法如下:

Create table complex(

col1 ARRAY<INT>,

Col2 MAP<STRING,INT>,

Col3 STRUCT<a:STRING,b :INT,c:DOUBLE>

);

Select col1[0],col2[‘b’],col3.c from complex;

2、hive数据模型

数据模型主要有:database、table、partition、bucket

(1)database:相当于关系型数据库中的命名空间,作用是将数据库应用隔离到不同的数据库模式中,hive提供了create database dbname、use dbname以及drop database dbname这样的语句

(2)table:表由存储的数据及描述表的一些元数据组成,存储的数据存储在分布式文件系统中,元数据存储在关系型数据库中,刚创建表还没有加载数据时,在hdfs上只是创建了一个目录,如table a,在hdfs上的路径为${hive仓库路径}/a,加载完数据后会将数据文件拷贝到该hdfs目录下,文件名与加载的数据文件名相同,如${hive仓库路径}/a/empinfo.txt

hive的表分两种:

  1>托管表:这种表的数据文件会加载到hive设置的数据仓库目录下

  2>外部表:这种表存放在hive数据仓库目录以外的其它hdfs目录中,也可以放在hive的数据仓库中

创建托管表:

hive>Create table tuoguan_tbl (flied string);

hive>load data local inpath ‘home/hadoop/test.txt’ into table tuoguan_tbl;

创建外部表:

hive> create external table external_tb1(field string)
> location ‘/user/username/input/tb_wordcount‘;//如果不加location数据会加载到hive的数据仓库中

hive>load data local inpath ‘test.txt’ into table external_tbl;

 托管表、外部表的区别除了加载的数据存放的目录不一样外,还有一个是使用drop命令的区别,托管表在drop时存储的数据还有元数据都会删除,而外部表只会删除元数据,不会删除存储数据。

查看表的具体信息使用:

desc tableName 或者 desc formatted tableName

(3)partition:分区

hive分区是根据某列的值进行粗略的划分,每个分区对应hdfs上的一个目录,例如:

有几个目录/user/username/input/2015/01、/user/username/input/2015/02两个目录,建表想以年、月份分区,可建表:

Create table logs(id int,line string)

Partitioned by (year string,month string);

然后查询select * from logs where month=02然后查询的时候就会只扫描/user/username/input/2015/02这个目录

(4)桶:要使用桶,首先要打开hive对桶的控制:

hive>set hive.enforce.bucketing = true

桶是按照指定值进行hash,每个桶就是表目录里的一个文件

时间: 2024-10-11 16:08:24

hive初探2_数据模型的相关文章

spark sql on hive初探

前一段时间由于shark项目停止更新,sql on spark拆分为两个方向,一个是spark sql on hive,另一个是hive on spark.hive on spark达到可用状态估计还要等很久的时间,所以打算试用下spark sql on hive,用来逐步替代目前mr on hive的工作. 当前试用的版本是spark1.0.0,如果要支持hive,必须重新进行编译,编译的命令有所变化 export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M

Hive - 简介

一 概要介绍 Hive最初是应Facebook每天产生的海量新兴社会网络数据进行管理和机器学习的需求而产生和发展的,是建立在 Hadoop 上的数据仓库基础构架.作为Hadoop的一个数据仓库工具,Hive可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能. Hive 主要提供以下功能: 1. 它提供了一系列的工具,可用来对数据进行提取/转化/加载(ETL): 2. 是一种可以存储.查询和分析存储在HDFS(或者HBase)中的大规模数据的机制: 3. 查询是通过MapRedu

大数据时代的技术hive:hive介绍

我最近研究了hive的相关技术,有点心得,这里和大家分享下. 首先我们要知道hive到底是做什么的.下面这几段文字很好的描述了hive的特性: 1.hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析. 2.Hive是建立在 Hadoop

[转帖]我最近研究了hive的相关技术,有点心得,这里和大家分享下。

我最近研究了hive的相关技术,有点心得,这里和大家分享下. https://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3114180.html 首先我们要知道hive到底是做什么的.下面这几段文字很好的描述了hive的特性: 1.hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行.其优点是学习成本低,可以通过类SQL语句快速实

Hbase总结(一)-hbase命令,hbase安装,与Hive的区别,与传统数据库的区别,Hbase数据模型

Hbase总结(一)-hbase命令 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令表达式 创建表 create '表名称', '列名称1','列名称2','列名称N' 添加记录 put '表名称', '行名称', '列名称:', '值' 查看记录 get '表名称', '行名称' 查看表中的记录总数 count  '表名称' 删除记录 delete  '表名' ,'行名称' , '列名称' 删除一张表 先要屏蔽该表,才能对

Hive 数据模型

 Hive 数据模型 Hive 数据表有五种类型:内部表,外部表,分区表,桶表,视图表,默认以 tab 分隔 * MySQL (Oracle) 表默认以逗号分隔,因此,要想导入 MySQL(Oracle) 数据,需要设置分隔符,在建表语句后加: row  format   delimited   fields   terminated  by  ','; 内部表: 相当于 MySQL 中的表,将数据保存到Hive 自己的数据仓库目录中:/usr/hive/warehouse 例子: create

hive的数据类型和数据模型

关系数据库里有表(table),分区,hive里也有这些东西,这些东西在hive技术里称为hive的数据模型.今天本文介绍hive的数据类型,数据模型以及文件存储格式.这些知识大家可以类比关系数据库的相关知识. 首先我要讲讲hive的数据类型. Hive支持两种数据类型,一类叫原子数据类型,一类叫复杂数据类型. 原子数据类型包括数值型.布尔型和字符串类型,具体如下表所示: 基本数据类型 类型 描述 示例 TINYINT 1个字节(8位)有符号整数 1 SMALLINT 2字节(16位)有符号整数

Hive的数据模型及各模块的应用场景

Hive的数据模型 Hive数据模型.png 数据模型组成及应用场景 Hive的数据模型主要有:database.table.partition.bucket四部分: 数据模型之database database:相当于关系型数据库中的命名空间,作用是将数据库应用隔离到不同的数据库模式中,hive提供了create database dbname.use dbname 以及drop database dbname的语句: 数据模型之table table:表是由存储的数据以及描述表的一些元数据组

Hadoop实习操作练习1(Hive与HBase初探)

Chapter 1:     引言 近期电信集团公司举办了大数据技术培训课,按照要求,Hadoop小白的我对两者作完对比,进行实际操作做一个练习记录吧,嘿嘿... 两者的共同点: 1.hbase与hive都是架构在hadoop之上的.都是用hadoop作为底层存储 两者的区别: 2.Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBase是为了支持弥补Hadoop对实时操作的缺陷的项目 . 3.想象你在操作RMDB数据库,如果是全表扫描,就用Hive+