как запросить много таблиц за один снимок в Hive? - PullRequest
0 голосов
/ 05 августа 2020

Мне нужно запросить, а затем «объединить» множество таблиц. Я сделал это вручную в Hive, но мне интересно, есть ли более оптимальный (более короткий) способ сделать это.

У нас есть таблицы на каждый месяц, поэтому вместо того, чтобы делать это на целый год:

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...);

Позволяет ли Hive (или любой другой тип SQL) l oop просматривать таблицы? Я видел примеры l oop и while в T- SQL, но это отдельные запросы. В этом случае я хочу объединить таблицы.

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

Затем, как запросить каждую таблицу в @t_list и «объединить все»? Каждый месяц имеет около 800 тыс. Строк, поэтому он большой, но Hive справится.

1 Ответ

0 голосов
/ 05 августа 2020

Эту проблему можно решить с помощью многораздельной таблицы кустов вместо нескольких таблиц.

Пример: table_whole указывает на путь hdfs hdfs: // путь / к / целому / с разделами на год и месяц

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'
...