как объединить запрос show partition с оператором select, чтобы получить последний раздел с именем таблицы - PullRequest
1 голос
/ 31 октября 2019

Я ищу запрос куста / SQL, который выдает выходные данные таким образом, что он печатает как имя таблицы, так и разделы соответственно ... Или аналогичный запрос, который выполняется быстро и дает последний раздел и имя таблицы

SELECT 'table1' AS table_name,* FROM(show partitions table1) AS a;

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Вы не можете выполнить команду show partitions внутри запроса, вместо этого вы можете запустить отдельный запрос для столбца раздела и использовать этот запрос как вложенный запрос, как показано ниже.

У меня есть таблица t2который является разделом в столбце roll

show partitions t2;
OK
roll=2
roll=3

, чтобы показать имя раздела и таблицы вместе, вы можете обратиться к следующему подходу

select "t2",a.part 
from 
(
select distinct roll as part from t2
) a ;

Total MapReduce CPU Time Spent: 2 seconds 940 msec
OK
t2  2
t2  3

Для более конкретного результата

 > select "t2",concat("roll=",a.part)
>     from 
>     (
>     select distinct roll as part from t2
>     ) a ;

Total MapReduce CPU Time Spent: 3 seconds 290 msec
OK
t2  roll=2
t2  roll=3
0 голосов
/ 31 октября 2019

Невозможно использовать «SHOW PARTITIONS» в утверждении HIVE. Что вы можете сделать, это использовать «Отличительный». Однако это не очень хороший подход. Пример кода:

select "table1" as name, * from (select distinct(partitition_name) from test_table) as b;´

Другой вариант - использовать команды HDFS в сценарии оболочки или использовать другой язык программирования, например pyspark o scala.

Кроме того, вы можете получить доступ к таблицам Hive MetaStrore. ,Информация о разделах доступна в таблице «РАЗДЕЛЫ». Пример кода:

select PART_NAME FROM PARTITIONS WHERE TBL_ID=(SELECT TBL_ID FROM TBLS WHERE TBL_NAME='<table_name>');
...