2016-08-31 12 views
0

Я новичок в Impala, я делаю несколько тестовых примеров на Impala. Я обнаружил, что аналогичные SQL-запросы намного быстрее, когда я звонил во второй раз.Имеет ли вложения impala некоторые данные после запросов

Например:

  • Table1 = 4B строки
  • таблица2 = 50M строк

1-й запрос: select * from table1 where id in (select id from table2 where xxx < 10000) (20 секунд)

2-й запрос: select * from table1 where id in (select id from table2 where xxx < 9999) (10 секунд)

третий запрос: select * from table1 where id in (select id from table2 where xxx < 100) (1 секунда)

Я думаю Impala сделать некоторый специальный кэш, может кто-нибудь может сказать мне его причину?

Спасибо.

+0

Я прочитал несколько блогов с http://www.cloudera.com/documentation/cdh/5-1-x/Impala/Installing-and-Using-Impala/ciiu_perf_stats.html Но я не нашел никаких статистика и кеш в таблицах или столбцах stat в моих таблицах; –

ответ

1

Impala использует кэш ОС и дополнительное кэширование HDFS.

Отрывок из Using HDFS Caching with Impala:.

«Кэш ОС Linux [...] только сохраняет недавно использованные данные в памяти Считывание данных из кэша HDFS позволяет избежать накладных расходов и контрольной суммы памяти в памяти копирование при использовании данных из кэша ОС Linux ».

Это может объяснить разницу во времени выполнения между 1-м и 2-м запросами. Однако причина, по которой ваш третий запрос намного быстрее, чем первые два, вероятно, не кеширование (только), а тот факт, что он запрашивает только 1/100th данных (при условии равномерного распределения xxx).

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

  • Нет связанных вопросов^_^