как сгруппировать данные из улья с конкретным разделом?

Имею следующее:

hive>show partitions TABLENAME                                                           
pt=2012.07.28.08                                                                         
pt=2012.07.28.09                                                                         
pt=2012.07.28.10                                                                         
pt=2012.07.28.11                                                                         
hive> select pt,count(*) from TABLENAME group by pt;                                     
OK    

Почему group by не может получить данные?


person user2935539    schedule 30.10.2013    source источник
comment
каков результат select count(*) from TABLENAME? вы уверены, что у вас есть данные в разделах?   -  person dimamah    schedule 30.10.2013
comment
Я полагаю, что есть данные, иначе разделы не могут быть созданы, я прав?   -  person Raja Reddy    schedule 04.11.2013


Ответы (3)


Убедитесь, что для hive.mapred.mode установлено значение "strict", если это так, это не позволит всем разделам сканировать отправленный запрос. Вы можете установить его как нестрогий, как показано ниже:

hive>set hive.mapred.mode=nonstrict;

Я не уверен, вызвало ли это НЕТ результатов из вашего запроса, но пытаюсь решить эту проблему. Делитесь результатами.

Примечание. Вы можете проверить значение по умолчанию для этого параметра в hive-default.xml

person Raja Reddy    schedule 05.11.2013
comment
Спасибо. Я установил hive.mapred.mode = strict, а затем запустил запрос (выберите pt, count (*) из группы таблиц по pt), но у меня возникла ошибка типа AILED: SemanticException org.apache.thrift.transport.TTransportException: java. net.SocketTimeoutException: время ожидания истекло - person user2935539; 12.11.2013

Вы всегда можете добиться того же, используя 2 оператора select. Для бывшего

Create table table1(
session_id string,
page_id string
)
partitioned by (metrics_date string);

Допустим, у нас есть загруженная таблица на 2 раздела

hive> показать таблицу разделов1
metrics_date = 2012.07.28.08
metrics_date = 2012.07.28.09

select * from table1 ;

1212121212    google.com     2012.07.28.08 

1212121212    google.com     2012.07.28.09`
Getting number of rows per partition
select metrics_date,count(*) from (
select * from table1 ) temp
group by metrics_date;  
person Aadithya_h    schedule 17.02.2014

Чтобы получить полные результаты вместе с группой по, вы можете использовать приведенный ниже запрос.

SELECT pt,count(*) OVER (PARTITION BY pt) FROM TABLENAME;

Этого можно добиться с помощью раздела.

person USB    schedule 08.02.2016
comment
Получение HiveSQLException: Error while compiling statement: FAILED: SemanticException Failed to breakup Windowing invocations into Groups. At least 1 group must only depend on input columns. Also check for circular dependencies. - person Omar Ali; 04.05.2018