Hive 分区验证
Posted
技术标签:
【中文标题】Hive 分区验证【英文标题】:Hive Partitioning validation 【发布时间】:2018-06-14 13:35:08 【问题描述】:我创建了一个分区 hive 表。我将数据插入到此表中。现在假设我使用where
子句执行一个select *
查询,那么我如何确保配置单元查询正在使用分区?
【问题讨论】:
请考虑在您的问题中添加代码和响应示例,以使其更有可能获得建设性的答案:例如:您尝试过哪些代码?反应如何偏离您的预期结果?有错误吗? Here's a helpful resource. 当然,我会确保它..这是一个正常的查询,根本不需要代码 【参考方案1】:假设您的 HIVE 数据被拆分为 3 个分区,并且每个 HDFS 分区包含一个不大于一个 HDFS 块的文件,那么在分区值上带有 WHERE 的 SELECT * 应该会触发一个 YARN 映射器。
请注意,这种行为可能与新的 HIVE 引擎(如 TEZ 和 LLAP (Hortonworks) 或 Impala (Cloudera) 不同)
【讨论】:
【参考方案2】:您可以通过执行EXPLAIN EXTENDED
命令来验证分区修剪工作。
EXPLAIN EXTENDED select * from mytable where load_date='2018-01-01';
计划中的分区信息如下:
Path -> Partition: s3n://bucket_name/mytable/load_date=2018-01-01
Partition base file name: load_date=2018-01-01
input format: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
output format: org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
partition values: load_date 2018-01-01
【讨论】:
以上是关于Hive 分区验证的主要内容,如果未能解决你的问题,请参考以下文章