分享

Hive分桶问题

舒克 发表于 2017-4-20 09:06:44 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 3 8125
在对Hive中的表进行分桶的时候,可不可以将表中这列的值设置为桶的名字,如果按照默认的数字名字,那么在查询的时候怎么这个桶里面装的哪些数据?,在查询时如何遍历全部的桶,然后再对桶内的数据进行处理?

已有(3)人评论

跳转到指定楼层
2017 发表于 2017-4-20 15:48:37
表述的没怎么看明白?楼主最好截图。hive的桶,指定列的值为key进行hash,hash到指定的桶中.
也就是对这些数据采用了归类。
遍历的时候可以提高查询效率。
比如1-10一个桶
11-20一个桶。
这样肯定比1-20快。
这样如果看不出效果的话。
把1万分成1000份,找9,99,999
和在一万份里面找9,99,999。效率肯定不一样的。
如果是桶的话
只需要遍历
1-10
跳到
90-100,这样你说桶的效率高不高。

回复

使用道具 举报

舒克 发表于 2017-4-20 16:11:08
2017 发表于 2017-4-20 15:48
表述的没怎么看明白?楼主最好截图。hive的桶,指定列的值为key进行hash,hash到指定的桶中.
也就是对这些 ...

可能我没说清楚,我现在用其他的数据和一张车辆GPS数据进行匹配,这张车辆GPS的数据表有200万行,几千辆车,我是根据车牌号这一列,将每一辆车分成一个桶,一共3000多个桶,现在的需求是先遍历所有车牌号,匹配到相应的车辆,然后再去遍历这辆车里面对应的数据,就不用全表扫描了。
问题1:分成桶后,每个桶的名字都是0000006_0这样的,就没法进行匹配了?
问题2:在对桶进行查询时,只是抽样查询,只查询一部分,万一这部分匹配不到相应的车牌号呢?如何来对这3000多个车牌号进行遍历?
分桶如下图所示:
截图.jpg



回复

使用道具 举报

2017 发表于 2017-4-20 17:21:53
本帖最后由 2017 于 2017-4-20 17:32 编辑
舒克 发表于 2017-4-20 16:11
可能我没说清楚,我现在用其他的数据和一张车辆GPS数据进行匹配,这张车辆GPS的数据表有200万行,几千辆 ...

如果楼主怕万一漏掉的话,可以使用非抽样查询试试

更多参考:
Hive分桶的作用

希望有一定的帮助



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条