2015-12-15 3 views
1

У меня возникла проблема, когда я использую инструкцию select в пользовательской внешней таблице, которую я создал. Я добавил разделы в эту таблицу после создания таблицы год и день с помощью команды add partition.HiveQL не работает, как ожидалось, во внешней таблице с разделами

Проблема, с которой я сталкиваюсь, заключается в том, что я получаю только одну строку, где day = 1 для этого оператора выбора, где я ожидаю 5 строк в течение 5 дней.

select * from test_data where key = 'AX001'; 

Для каждого из этих утверждений я получаю один результат.

select * from test_data where key = 'AX001' and day = 2; 
select * from test_data where key = 'AX001' and day = 3; 

Но для этого я получаю только один ряд с днем ​​= 2.

select * from test_data where key = 'AX001' and day in (2,3); 

Любая идея, что может быть причиной такого поведения?

+0

Какая версия улья? * (много ошибок, идущих и идущих на каждом выпуске ...) * Вы фактически определили 'DAY' как String или Integer? Что происходит, когда вы заменяете 'и DAY в (2,3)' на 'и (DAY = 2 или DAY = 3)'? –

+0

Hive 0.13.1-CDH5.2.0..I определенный день как int в инструкции create table, разделённый на (year int, month int, day int) ".. и (день = 2 или день = 3) также дает мне одна строка с днем ​​= 2. Я просто пробовал день в (3,4,5) и получил строку, где день = 3. –

ответ

0

Apparantly решение здесь Hive MapReduce job splitting up files, который был еще один вопрос, который я уже разгадав эту

select * from test_table where key = 'AX001' and day in (1,2,3); 

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; 
select * from test_table where key = 'AX001' and day in (1,2,3); 

set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; 
select * from test_table where key = 'AX001' and day in (1,2,3); 

только последний дает мне 3 results.The первые два просто возвращает две строки.

Смежные вопросы