我有一个带有列Id
的大型Hive表,我想根据Id
列的值将此表分解为多个表。也就是说,这些较小的表中的每个表在
|----|-------|
| Id | Value |
|----|-------|
| 1 | 2 |
| 1 | 3 |
| 2 | 4 |
| 3 | 5 |
|----|-------|
列中都具有相同的值
原始表:
|----|-------|
| Id | Value |
|----|-------|
| 1 | 2 |
| 1 | 3 |
|----|-------|
子表:
|----|-------|
| Id | Value |
|----|-------|
| 2 | 4 |
|----|-------|
|----|-------|
| Id | Value |
|----|-------|
| 3 | 5 |
|----|-------|
Id
我目前正在原始表上使用循环来过滤ID值,并将每个ID值的过滤输出写入新表中。
但是,由于存在大量ID,Hive必须为Id上的每个过滤器启动并运行MapReduce任务,因此效率极低
我的直接想法是将原始表保留在Id
列上,因此以后可能会加快{{1}}上的筛选器。
是否有更有效的方法来执行类似的操作?