[英]Hive Bucketing - How to run hive query for specific bucket
我有配置单元查询,它读取5个大表并将记录输出到下一个进程。 所有这些表都在proc_dt上分区,并在user_id(5个存储桶)上存储。 联接在user_id上完成,在proc_dt上进行过滤。
如何为所有表的特定存储桶运行此查询? 对于前。 我只想对所有表的第一个存储区运行查询。
这样做的原因是,一旦完成对第一个存储桶的查询,就可以将输出数据发送到下一个进程。 在下一个进程运行时,我可以完成对下一个存储桶的查询,依此类推。 这样,下一个过程无需等待整个查询完成。
如果我还有一列包含用户ID为Mod5的列,那么我将进行分区。 但是没有这样的列,我无法添加它。
任何人都可以给我一些解决方案。 任何建议都会非常有帮助。
我得到了答案。 我们可以在联接查询中提及存储桶编号。 检查以下链接以获取更多详细信息。
https://www.qubole.com/blog/big-data/5-tips-for-efficient-hive-queries/
您可以在查询语句中指定分区,但不能指定存储桶。 存储桶用于优化目的-例如,更快的采样和Mapside联接。 但是它们对sql语句不可见。
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL+BucketedTables
因此,这是文档示例:
CLUSTERED BY(user_id) INTO 256 BUCKETS;
显然,这不允许按值/名称访问各个存储桶。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.