如何在配置单元中一次查询多个表?

ogsagwnx  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(323)

我必须查询然后“联合”许多表。我在Hive里手动做了,但不知道是否有一个更优化(短)的方法来做它。
我们每个月都有table,所以不要一整年都这样做:

create table t_2019 as
select * from
(select * from t_jan where...
union all
select * from t_feb where...
union all
select * from t_mar where...);

配置单元(或任何类型的sql)是否允许循环表?我见过t-sql中的for循环和while示例,但它们是单独的查询。在这种情况下,我想合并表。

@t_list = ('t_jan', 't_feb', 't_mar'...etc)

那么,如何查询@t\u list和“union all”中的每个表呢?每个月大约有80万行,所以它很大,但Hive可以处理。

7nbnzgx9

7nbnzgx91#

可以使用分区配置单元表而不是多个表来解决此问题。
例如:指向hdfs路径的表hdfs://path/to/whole/ 分年分月

Now you can query to get data from  all months in 2019 using
select * from table_whole where year = '2019' 

If you need just data from one month say Jan in 2019. you can filter by that partition 
select * from table_whole where year = '2019' and month='JAN'

相关问题