一些Hive知识点记录

开发者 2024-9-13 18:28:52 43 0 来自 中国
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 是页存储方式,每一个列块包含多个页,一个页是最小的编码的单位,同一列块的不同页可以使用不同的编码方式。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 16:52, Processed in 0.118442 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表