配置单元bucketing-如何为特定的bucket运行配置单元查询

lnvxswe2  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(318)

我有一个配置单元查询,它读取5个大表并将记录输出到下一个进程。所有这些表都在proc\u dt上分区,并在user\u id(5个bucket)上绑定。连接是在用户id上完成的,过滤是在proc\u dt上完成的。
如何对所有表的特定bucket运行此查询?例如,我只想对所有表的第一个bucket运行查询。
这样做的原因是,一旦完成对第一个bucket的查询,就可以将输出数据发送到下一个进程。当下一个进程运行时,我可以完成下一个bucket的查询等等。这样,下一个进程就不会等待整个查询完成。
如果我有一个更多的列,其中有mod5的用户id,那么我会去分区。但是没有这样的栏,我不能添加它。
谁能给我一些解决办法吗。任何建议都会很有帮助。

xxhby3vn

xxhby3vn1#

我得到了答案。我们可以在join查询中提到bucket号。查看下面的链接了解更多详细信息。
https://www.qubole.com/blog/big-data/5-tips-for-efficient-hive-queries/

guz6ccqo

guz6ccqo2#

可以在查询语句中指定分区,但不能在存储桶中指定。bucket用于优化目的,例如更快的采样和mapside连接。但是它们对sql语句不可见。
https://cwiki.apache.org/confluence/display/hive/languagemanual+ddl+bucketedtables
下面是文档示例:

CLUSTERED BY(user_id) INTO 256 BUCKETS;

这显然不允许通过值/名称访问单个bucket。

相关问题