一些Hive知识点记录-数据库论坛-技术分享-千百度社区

一些Hive知识点记录

一些Hive知识点记录

Hive

Hive是读时模式:

在传统数据库里,表的模式是在数据加载时强制确定的。如果在加载时发现数据不符合模式,则被拒绝加载数据。

因为数据是在写入数据库是对照模式进行检查,因此这一设计有时被称为“写时模式”(schema on write)。

Hive这种类型的数据处理模式对数据的验证并在不加载数据时进行,而在查询时进行。这称为“读时模式”(schema on read)

Hive会为每个数据库创建一个目录。数据库中的表会以这个数据库目录的子目录形式存储(default库例外)

数据库所在的目录位于属性hive.metastore.warehouse.dir所指的顶层目录之后,文件目录名是以.db结尾的

外部表

关键字EXTENAL指明外部表,LOCATION…字句指明数据在哪个路径下

删除外部表时不会删除掉这份数据,元数据会被删除

分区表

改变了Hive对数据存储的组织方式 PARTITIONED BY ,会创建好可以反映分区结构的子目录

strict严格模式:

1、对分区表进行查询而WHERE没有加分区过滤,将会禁止提交这个任务

2、ORDER BY语句的查询必须使用limit语句

3、笛卡尔积

STORED AS TEXTFILE: 文本文件格式存储数据(默认)

STORED AS SEQUENCEFILE/RCFILE: 二进制编码和压缩来优化磁盘空间以及IO带宽性能           

Hive总是按照从左到右的顺序执行

a join b join c:启动一个MapReduce job对表a表b进行连接操作,然后再启动一个MapReduce job将其输出和c进行连接操作,

如果每个ON子句都使用相同连接键则只会产生一个MapReduce job

join时大表放右边

map-side join :有一个表足够小到可以完全载入到内存中,这样可以减少reduce过程,有时甚至可以减少map task任务

Parquet 的存储模型主要由行组(Row Group)、列块(Column Chuck)、页(Page)组成。

1、行组,Row Group:Parquet 在水平方向上将数据划分为行组,默认行组大小与 HDFS Block 块大小对齐,Parquet 保证一个行组会被一个 Mapper 处理。

2、列块,Column Chunk:行组中每一列保存在一个列块中,一个列块具有相同的数据类型,不同的列块可以使用不同的压缩。

3、页,Page:Parquet 是页存储方式,每一个列块包含多个页,一个页是最小的编码的单位,同一列块的不同页可以使用不同的编码方式。

© 著作权归作者所有,转载或内容合作请联系作者

请登录后发表评论

    没有回复内容