Hive Bucketing - 如何针对特定存储桶运行配置单元查询

时间:2015-11-21 14:23:26

标签: hadoop hive

我有hive查询,它读取5个大表并将记录输出到下一个进程。所有这些表都在proc_dt上进行了分区,并在user_id(5个桶)上进行了分区。联接在user_id上完成,并在proc_dt上进行过滤。

如何针对所有表的特定存储桶运行此查询?对于前者我想为所有表的第一个桶运行查询。

这样做的原因是,一旦我完成第一个存储桶的查询,我就可以将输出数据发送到下一个进程。当下一个进程正在运行时,我可以完成查询下一个存储桶等等。这样下一个进程就不会等待整个查询完成。

如果我还有一个具有用户ID Mod5的列,那么我就可以进行分区了。但是没有这样的专栏,我无法添加它。

有谁能请给我一些解决方案。任何建议都会非常有用。

2 个答案:

答案 0 :(得分:1)

我得到了答案。我们可以在连接查询中提到桶号。请查看以下链接以获取更多详细信息。

https://www.qubole.com/blog/big-data/5-tips-for-efficient-hive-queries/

答案 1 :(得分:0)

您可以在查询语句中指定分区,但不能指定存储区。桶用于优化目的 - 例如更快的采样和mapside连接。但它们对sql语句不可见。

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL+BucketedTables

所以这是文档示例:

CLUSTERED BY(user_id) INTO 256 BUCKETS;

这显然不允许按值/名称访问各个存储桶。