2/10-数据分区&分桶学习
1 Hive分区
1.1 静态分区
- 把输入数据文件单独插入分区表的叫静态分区。
- 通常在加载文件(大文件)到 Hive 表的时候,首先选择静态分区。
- 在加载数据时,静态分区比动态分区更节省时间。
- 你可以通过 alter table add partition 语句在表中添加一个分区,并将文件移动到表的分区中。
- 我们可以修改静态分区中的分区。
- 您可以从文件名、日期等获取分区列值,而无需读取整个大文件。
- 如果要在 Hive 使用静态分区,需要把 hive.mapred.mode 设置为 strict,set hive.mapred.mode=strict。
- 静态分区是在严格模式进行下。
- 你可以在 Hive 的内部表和外部表使用静态分区。
1.2 动态分区
- 对分区表的一次性插入称为动态分区。
- 通常动态分区表从非分区表加载数据。
- 在加载数据的时候,动态分区比静态分区会消耗更多时间。
- 如果需要存储到表的数据量比较大,那么适合用动态分区。
- 假如你要对多个列做分区,但又不知道有多少个列?,那么适合使用动态分区。
- 动态分区不需要 where 子句使用 limit。
- 不能对动态分区执行修改。
- 可以对内部表和外部表使用动态分区。
建立内部表和外部表时external区别,两者的区别在于:内部表,删除表格时,删除元数据(meta data)和存储数据,即表格,以及对应表格的数据文件;外部表,删除表格时,只删表结构
https://blog.csdn.net/qq_34224565/article/details/108448261?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=1 - 使用动态分区之前,需要把模式修改为非严格模式?。set hive.mapred.mode=nostrict。
SequenceFileInputFormat:
sequence 文件是块压缩的,并且提供了几种数据类型(不仅仅是文本类型)直接的序列化和反序列化操作。
序列化反序列化?