Я обнаружил некоторые (значительные) различия в производительности (как в режиме реального времени, так и в процессорном времени) между Pig and Hive и ищу способы найти их в основе этих различий. Я использовал функцию объяснения обоих языков (т. Е. Hive: ключевое слово EXPLAIN, Pig: pig -e 'explain -script explain.pig'), чтобы сравнить и сравнить генерируемое синтаксическое дерево, логические, физические и планы сокращения карты. Однако оба, похоже, делают то же самое. Однако диспетчер заданий показывает разницу в количестве карт и уменьшении задач (я, следовательно, гарантировал, что оба используют одинаковое количество карт и уменьшают задачи, а разница в производительности остается). Поэтому мой вопрос: каким другим способом я могу анализировать происходящее (возможно, на уровне более низкого уровня/байт-кода)?Производительность: Pig vs Hive
EDIT: Я выполняю тесты TPC-H с помощью TPC (доступно https://issues.apache.org/jira/browse/PIG-2397 и https://issues.apache.org/jira/browse/HIVE-600). Однако даже более простые сценарии демонстрируют довольно большую разницу в производительности. Например:
SELECT (dataset.age * dataset.gpa + 3) AS F1,
(dataset.age/dataset.gpa - 1.5) AS F2
FROM dataset
WHERE dataset.gpa > 0;
мне еще нужно, чтобы полностью оценить TPC-H тестов (будет обновляться позже), однако результаты для более простых сценариев, подробно описаны в данном документе: https://www.dropbox.com/s/16u3kx852nu6waw/output.pdf
(JPG: http://i.imgur.com/1j1rCWS.jpg)
Можете ли вы показать скрипт и SQL, которые вы используете для тестирования? – zsxwing
Как установить раздел в таблице данных в Hive? – zsxwing
Извините, что вы имеете в виду? Я не совсем понимаю (я совершенно новый для Hadoop)/Hive – JB2