根据一列有效地将Hive表划分为多个表

时间:2018-09-19 22:46:54

标签: database hive datatables mapreduce partitioning

我有一个带有列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}}上的筛选器。

是否有更有效的方法来执行类似的操作?

0 个答案:

没有答案