use*_*111 5 hadoop hive mapreduce
嗨,我非常喜欢蜂巢,我已经通过hadoop行动中的桶概念,但未能理解下面的行.任何人都可以帮助我吗?
SELECT avg(viewTime)
FROM page_view TABLESAMPLE(BUCKET 1 OUT OF 32);
Run Code Online (Sandbox Code Playgroud)
TABLESAMPLE的一般语法是TABLESAMPLE(BUCKET x OUT OF y)
查询的样本大小约为1/y.此外,y需要是表创建时为表指定的桶数的倍数或因子.例如,如果我们将y更改为16,则查询变为
SELECT avg(viewTime)
FROM page_view TABLESAMPLE(BUCKET 1 OUT OF 16);
Run Code Online (Sandbox Code Playgroud)
然后,样本大小包括每16个用户中的大约1个(因为桶列是用户ID).该表仍有32个桶,但Hive尝试通过一起处理桶1和17来满足此查询.另一方面,如果y被指定为64,则Hive将对一个桶中的一半数据执行查询.x的值仅用于选择要使用的存储桶.在真正的随机抽样下,它的价值无关紧要.
bbk*_*glb 11
你明白哪一部分不明白?
当您创建表并使用该clustered by子句将其存储到32个桶中时(作为示例),hive使用确定性散列函数将数据存储到32个桶中.然后在使用时TABLESAMPLE(BUCKET x OUT OF y),hive将您的桶分成y个桶组,然后选择每个组的第x个桶.例如:
如果你使用TABLESAMPLE(BUCKET 6 OUT OF 8),hive会将你的32个桶分成8个桶组,产生4组8个桶,然后挑选每组的第6个桶,因此挑选桶6,14,22,30.
如果你使用TABLESAMPLE(BUCKET 23 OUT OF 32),hive会将你的32个桶分成32个组,只产生一组32个桶,然后选择第23个桶作为你的结果.
如果你使用TABLESAMPLE(BUCKET 3 OUT OF 64),hive会将你的32个桶分成64个桶组,产生1组64"半桶",然后选择与第3个满桶相对应的半桶.
| 归档时间: |
|
| 查看次数: |
9993 次 |
| 最近记录: |