在Hive表中分区有多个值?

时间:2018-10-11 11:15:59

标签: hive sqoop

我想创建一个简单的配置单元分区表,并有一个sqoop import命令来填充它。

1。表有4列,分别是ID,col1,col2,col3。

  1. 其中一列说col2是int类型,并且仅包含值1到10。

  2. 我需要基于col2列对表进行分区,其中1到5个值数据应该在一个分区中,而在另一个分区中。

我目前正在尝试不起作用的方法: 更改表tblname添加分区(col2 = 1,col2 = 2,col2 = 3,col2 = 4,col2 = 5)位置'Part1';

  1. 完成后,我需要使用从SQL Server导入的sqoop填充此表。

我尝试了很多方法,但无法做到。谁能帮忙吗?

1 个答案:

答案 0 :(得分:1)

创建分区表并手动添加分区,例如1_to_3

create table ptable(name string) partitioned by (id string);
alter table ptable add partition (id='1_to_3');

show partitions ptable;
+------------+--+
| partition  |
+------------+--+
| id=1_to_3  |
+------------+--+

我知道,如果部门ID为1或2或3,我应该将部门表中的数据加载到此分区中。

insert into ptable partition(id = '1_to_3') select department_name from departments where department_id between 1 and 3;

查看屏幕截图

enter image description here

select * from ptable;
+------------------+------------+--+
|   ptable.name    | ptable.id  |
+------------------+------------+--+
| Marketing        | 1_to_3     |
| Finance          | 1_to_3     |
| Human Resources  | 1_to_3     |
+------------------+------------+--+

您可能需要添加另一个分区来保存其他值,例如department_id > 3