При выполнении соединения в Hive и последующей фильтрации вывода с помощью предложения where компилятор Hive попытается отфильтровать данные перед объединением таблиц. Это называется раскрытием предиката (http://allabouthadoop.net/what-is-predicate-pushdown-in-hive/)
Например:
SELECT * FROM a JOIN b ON a.some_id=b.some_other_id WHERE a.some_name=6
Строки из таблицы a, которые имеют some_name = 6, будут отфильтрованы перед выполнением соединения, если включены предикаты push down (hive.optimize.ppd).
Однако недавно я узнал, что есть еще один способ фильтрации данных из таблицы перед объединением ее с другой таблицей ( https://vinaynotes.wordpress.com/2015/10/01/hive-tips-joins-occur-before-where-clause/ а>).
Можно указать условие в предложении ON, и таблица a будет отфильтрована перед выполнением соединения.
Например:
SELECT * FROM a JOIN b ON a.some_id=b.some_other_id AND a.some_name=6
Обеспечивают ли оба эти действия оптимизацию предиката с раскрытием вниз?
Спасибо