0
点赞
收藏
分享

微信扫一扫

数据分区&分桶学习

思考的鸿毛 2022-02-18 阅读 122

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 文件是块压缩的,并且提供了几种数据类型(不仅仅是文本类型)直接的序列化和反序列化操作。
序列化反序列化?

举报

相关推荐

0 条评论