Недавно меня попросили сделать обзор новой книги по Apache Hive под названием “Руководство по работе с Apache Hive Essentials” (отредактировано: сейчас доступно второе издание), написанной Дарреном Ли и опубликованной издательством Packt Publishing. Короче говоря, я искренне рекомендую ее. Здесь я сосредоточился на том, что мне понравилось больше всего, и на том, о чем лично мне хотелось бы почитать.
Судя по оглавлению, в книге рассматриваются основные способы использования Hive, такие как разбиение на разделы, написание пользовательских UDF (определяемых пользователем функций) и UDAF (определяемых пользователем агрегатных функций) и работа с SerDe.
После прочтения большей части книга будет полезна большинству пользователей Hive, включая тех, кто никогда раньше не сталкивался с Hadoop. Она начинается с основных команд Hive для определения набора данных и управления им, а в следующих главах мы рассмотрим более сложные способы их использования.
Хотелось бы, чтобы автор уделил немного времени тому, как установить Hive с Hadoop или без него. Надеюсь, я не ошибаюсь на этот счет, но Hive не обязательно нуждается в Hadoop, который может быть полезен, когда кто-то хочет протестировать только несколько вещей. Для тех, кто хочет протестировать Hive в среде Hadoop, виртуальные машины, предоставляемые Hortonworks и Cloudera, значительно экономят время.
Есть несколько глав, таких как глава “Оптимизация соединений”, которые я использую в качестве справочной информации, когда хочу освежить свои воспоминания о том, какой тип соединения следует определять и как их выражать.
Я также благодарю автора Даррена за то, что он посвятил мне целых четыре главы посвящены пользовательским функциям. Это необходимо для любого пользователя, который хочет реализовать пользовательский алгоритм в ядре SQL-движка Hive.
Больше всего я сожалею о том, что в книге не освещается взаимодействие между Hive и другими внешними системами, такими как Oracle, Microsoft Power Pivot, Microstrategy… На мой взгляд, этой теме можно было бы посвятить одну или две главы. Это имеет решающее значение при интеграции Hadoop и его экосистемы в существующую информационную систему.
Кроме того, было бы интересно написать главу о том, как создать свой собственный формат файла. В книге уже описывается использование SerDe, но этого не всегда достаточно. Когда вы хорошо знаете свои данные, вы можете добиться удивительной экономии места и увеличения скорости, но при этом написать свои собственные. Я работал над случаем с временными рядами, когда пользовательский Serde оказался менее эффективным, чем RCFile, в то время как пользовательский формат файла превзошел все наши ожидания. В этом проекте моим решением было сериализовать временные ряды клиентов в виде векторов с помощью моих собственных алгоритмов сжатия.