Hive中的分区表

分区表

创建分区表

CREATE TABLE employees ( 
    name STRING, 
    salary FLOAT,
    subordinates ARRAY<STRING>,
    deductions MAP<STRING, FLOAT>,
    address STRUCT<street:STRING, city:STRING, state:STRING, zip:INT>
)
PARTITIONED BY (country STRING, state STRING);

分区表的目录结构

没有分区的目录结构:
hdfs://bigdata02:/user/hive/warehouse/db01.db/employees
分区后的目录结构:
hdfs://bigdata02:/user/hive/warehouse/db01.db/employees/country=CH/state=JS
hdfs://bigdata02:/user/hive/warehouse/db01.db/employees/country=AM/state=NY

分区表的优势

当我们需要查询中国江苏的雇员的信息的时候,我们就只需要列出一个目录下的数据就可以了,而不是扫描整个数据进行mapreduce处理,查询数据自然会快很多

分区表的劣势

我们知道对于分区表的每一个分区,都会启动一个map去读取数据,如果分区过于小的话,当我们对整个数据进行操作的时候,就会启动一个巨大的MapReduce任务,而每一个任务可能只是完成很少的一部分数据量的计算,所以我们对分区的划分需要有个度

分区表的信息的查询

hive> SHOW PARTITIONS employees; 
...
Country=CA/state=AB 
country=CA/state=BC
...

SHOW PARTITIONS employees PARTITI〇N(country=,US,);

SHOW PARTITIONS employees PARTITION(country='US', state='AK');

向分区表添加数据

LOAD DATA LOCAL INPATH '/home/hadoop/js.employee'
INTO TABLE employees PARTITION (country = 'CH', state = 'JS');

外部表和分区表的结合

优势:外部表可以随意指定分区的位置,我们就可以直接为分区表添加分区就可以了

alter table employee add partition (country='CH',state='JS') location 'hdfs://bigdata02:9000/employee/js';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hive SQL分区表是指根据特定的字段值将数据存储在不同的文件夹或子文件夹的表。分区表可以提高查询性能和数据管理的效率。分区表可以分为静态分区和动态分区两种类型。在创建分区表时,可以通过指定分区字段来实现数据的分区存储。分区字段不能是已有的字段,也不能重复。分区字段的值可以手动指定(静态分区)或根据查询结果位置自动推断(动态分区)。 动态分区是一种根据查询结果自动推断分区字段值的方式。在Hive启用动态分区需要设置两个参数,即hive.exec.dynamic.partition为true和hive.exec.dynamic.partition.mode为nonstrict。动态分区可以使用insert select语法来实现,通过该语法可以根据查询结果动态地将数据插入分区表Hive还支持多重分区,即在分区表的基础上继续进行分区。多重分区可以通过指定多个分区字段来实现,不同分区字段之间具有递进关系,可以理解为在前一个分区的基础上再进行分区,划分更加细的粒度。从HDFS的角度来看,多重分区就是在文件夹下继续划分子文件夹。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [HiveSQL 分区表](https://blog.csdn.net/weixin_53570636/article/details/127240576)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值