Выбор улья * показывает 0, но количество(1) показывает миллионы строк

#hadoop #hive

Вопрос:

Я создаю внешнюю таблицу улья и добавляю раздел по

 create external table tbA (
  colA int,
  colB string,
  ...)
PARTITIONED BY ( 
  `day` string)
stored as parquet;

alter table tbA add partition(day= '2021-09-04');
 

Затем я помещаю файл parquet в целевой каталог HDFS с помощью hdfs dfs -put ...

Я могу получить ожидаемые результаты, используя select * from tbA in IMPALA .

В Hive , я могу получить правильный результат при использовании select count(1) from tbA , однако, когда я использую

select * from tbA limit 10

Он вообще не возвращает никакого результата.

Если что-то не так с файлом parquet или каталогом, IMPALA не следует получать правильный результат и Hive можно отсчитывать номера строк… Почему select * from ... ничего не показывает? Любая помощь приветствуется.


Кроме того, при запуске select distinct day from tbA он возвращает 2021-09-04

запущенный select * from tbA , он возвращает данные с днем = 2021-09-04

Кажется, этот раздел распознан неправильно? Я повторил попытку удалить раздел и использовать msck repair table , но все еще не работает…

Комментарии:

1. В импале вы можете попробовать invalidate metadata tab ? А затем проверьте свои sqls.

2. Привет @KoushikRoy. Я попробовал ваш cmd, и impala все еще работает, как и ожидалось. Теперь Hive не может отображать данные.

3. в улье вы можете попробовать analyze table tab compute statistics .