多值配置单元表中的sqoop分区?

lyfkaqu1  于 2021-06-03  发布在  Sqoop
关注(0)|答案(1)|浏览(551)

我想创建一个简单的hive分区表,并使用sqoop import命令来填充它。
表有4列,id,col1,col2,col3。
其中一列say col2是int类型,只包含值1到10。
我需要基于col2列对表进行分区,1到5个值的数据应该在一个分区中,其余的在另一个分区中。
我目前正在尝试这个不起作用的方法:alter table tblname add partition(col2=1,col2=2,col2=3,col2=4,col2=5)location'part1';
完成后,我需要使用来自sql server的sqoop导入填充此表。
我试过很多方法,但都做不到。有人能帮忙吗?

ajsxfq5m

ajsxfq5m1#

创建一个分区表并手动添加一个分区。 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 |
+------------+--+

我知道如果department id为1、2或3,我应该将department表中的数据加载到这个分区中。

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

请参见屏幕截图
![](https://i.stack.imgur.com/TI5eJ.png)

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

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

相关问题