当前位置:首页 » 服务存储 » hive是按什么存储的
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

hive是按什么存储的

发布时间: 2022-06-07 02:29:35

‘壹’ 大数据Hive仓库是什么

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类sql查询功能;其本质是将HQL转化成MapRece程序。

  • 构建在Hadoop之上的数据仓库:

  • 使用HQL作为查询接口

  • 使用HDFS存储

  • 使用MapRece计算

  • 灵活性和扩展性比较好:支持UDF,自定义存储格式等:

  • 适合离线数据处理

‘贰’ hive的几种文件格式

hive文件存储格式包括以下几类:

1、TEXTFILE

2、SEQUENCEFILE

3、RCFILE

4、ORCFILE(0.11以后出现)

其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理;

SEQUENCEFILE,RCFILE,ORCFILE格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中, 然后再从表中用insert导入SequenceFile,RCFile,ORCFile表中。

前提创建环境:

hive 0.8

创建一张testfile_table表,格式为textfile。

create table if not exists testfile_table( site string, url string, pv bigint, label string) row format delimited fields terminated by ' ' stored as textfile;

load data local inpath '/app/weibo.txt' overwrite into table textfile_table;

一、TEXTFILE
默认格式,数据不做压缩,磁盘开销大,数据解析开销大。
可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,
从而无法对数据进行并行操作。
示例:

总结:
相比TEXTFILE和SEQUENCEFILE,RCFILE由于列式存储方式,数据加载时性能消耗较大,但是具有较好的压缩比和查询响应。数据仓库的特点是一次写入、多次读取,因此,整体来看,RCFILE相比其余两种格式具有较明显的优势。

‘叁’ hive和mysql的区别是什么

hive和mysql的区别有:

1、查询语言不同:hive是hql语言,mysql是sql语句;

2、数据存储位置不同:hive是把数据存储在hdfs上,而mysql数据是存储在自己的系统中;

3、数据格式:hive数据格式可以用户自定义,mysql有自己的系统定义格式;

4、数据更新:hive不支持数据更新,只可以读,不可以写,而sql支持数据更新;

5、索引:hive没有索引,因此查询数据的时候是通过maprece很暴力的把数据都查询一遍,也造成了hive查询数据速度很慢的原因,而mysql有索引。

‘肆’ 什么是hive分区

Hive的分区方式:由于Hive实际是存储在HDFS上的抽象,Hive的一个分区名对应一个目录名,子分区名就是子目录名,并不是一个实际字段。按照数据表的某列或某些列分为多个区,区从形式上是文件夹(HDFS里的文件夹)

‘伍’ hive分桶表的储存格式是什么固定的还是可以随意指定

对于每一个表或者是分区,Hive可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。Hive是针对某一列进行分桶。Hive采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶中。分桶的好处是可以获得更高的查询处理效率。使取样更高效
hive表数据是在hdfs中储存的并没有固定的储存格式,hive只保存管理表元数据。
桶就是将数据表由一个文件存储分为多个文件存储
分桶语法:
create table t_buck(id string,name string)
clustered by (id) into 4 buckets;
指定了根据id分成4个桶,最好的导入数据方式是insert into table.
要开启模式开关 
set hive.enforce.bucketing = true;
set maprece.job.reces=4;
查询时cluster by指定的字段就是partition时分区的key

‘陆’ 分布式环境下hive的外部表是如何存储的

第一、hive本身是不存储数据的,不论外表、内表,hive的所有数据是存放在hdfs文件系统的。
第二、基于上面,你的问题就转变为hdfs的文件是如何存储的了,hdfs的文件是以块block存储的,每个块分布在多台机器上面,每个块的信息以及存放路径则存放在nameNode节点的元数据里边。

‘柒’ hive 的元数据存储在 derby 和 mysql 中有什么区别

定义 元数据最本质、最抽象的定义为:data about data (关于数据的数据)。它是一种广泛存在的现象,在许多领域有其具体的定义和应用。 在数据仓库领域中,元数据被定义为:描述数据及其环境的数据。一般来说,它有两方面的用途。