从 Hive 中的多个表中选择 count(*)
Posted
技术标签:
【中文标题】从 Hive 中的多个表中选择 count(*)【英文标题】:Select count(*) from multiple tables in Hive 【发布时间】:2019-12-09 13:26:18 【问题描述】:我在 2 个不同的模式中有同名的表。我想要做的是在格式的2个表中进行计数比较
表名:Count1:Count2
如何通过 Hive 查询实现这一点?
【问题讨论】:
【参考方案1】:使用 UNION ALL:
select 'db1.table_name' table_name, count(col1) count1, count(col2) count2 from db1.table_name
UNION ALL
select 'db2.table_name' table_name, count(col1) count1, count(col2) count2 from db2.table_name
【讨论】:
【参考方案2】:您可以对计数查询进行cross join
。
select t1.count1,t2.count2
from (select count(*) as count1 from tbl1) t1
cross join (select count(*) as count2 from tbl2) t2
【讨论】:
嗨,我能够得到所需格式的结果,但我必须将 hive.strict.checks.cartesian.product 设置为 false。默认情况下,它设置为 true。这是什么检查,我是否通过将其设置为 true 来冒任何风险?【参考方案3】:尝试完全外连接
select tt1.cn,tt2.cn from
(select count(1) as cn from db1.table) tt1
full outer join
(select count(1) as cn from db2.table ) tt2
on tt1.cn=tt2.cn;
【讨论】:
以上是关于从 Hive 中的多个表中选择 count(*)的主要内容,如果未能解决你的问题,请参考以下文章
当查询返回多个 min(count) 数据时,如何从不同表中选择所有行
HIVE:如何仅从两个表中的两列中选择第三个表中不存在的不同值?