たごもりすメモ

コードとかその他の話とか。

Review: Instant Apache Hive Essentials How-to

突然英語でメールがやってきてレビューしてくれないかと頼まれ、面白そうだから引き受けて読んでみた。日本語でしかレビュー記事書かないけど大丈夫? と確認したら大丈夫だといって電子書籍データをもらいました。すごいことやってる会社があるなあ。イギリスの(電子書籍専門の?)出版社みたいだけど。

なおフォーマットは pdf, epub, mobi のどれでもダウンロードできる。すごい。日本はなぜこうじゃないの。

http://www.packtpub.com/apache-hive-essentials-how-to/book?utm_source=blog&utm_medium=link&utm_campaign=bookmention

で、読んだ。76ページの短い本。

ざっくり言うと

英語だけどすごく簡単な英語で書かれてて、きわめて簡単に読める。manとか普通に英語で読んでる人なら楽勝だと思う。読めば普通に導入からいろんなクエリを発行するところまで行ける。リファレンスには使えない*1けど、それはまあ、wikiを見ればいいんじゃないですかね。

各トピックについてはかなり短いが、必ず前提になるテーブルの準備をするためのクエリ*2から書かれており、どういうデータを相手にどういう SELECT が実行されているのかが非常にわかりやすい。いきなり SELECT クエリだけ見せられるよりずっと理解しやすいと思う。
また各トピックは必ず 実例(How to do) → どういう動作なのか(How it works) の順で書かれていて、これも直前に読んだ内容を深掘りすることに大いに役立つと思う。わかりやすい。トピックによっては 更に(There's more) があって補足が書かれてる。ここはちょっと説明足りないんじゃないのという気もするが、全体を短くまとめるのが目的ならこんなもんかも。逆にさくさく読めるとも言える。

いまHiveを使おうと思うと、周囲に誰も教えてくれる人がいない場合はいきなり「プログラミングHive」になってしまう。正直あの本は初心者が読む本じゃないし、あれを買えとはとても言えないと思う。あれはなんというか、Hadoopの管理やったりHiveのことだけ本当に年中考えてるような人が買うものだ。

Hive自体のいいところは、記法がほぼSQLなこと。なぜそれが良い理由になるかというと、MapReduceって何? という一般のソフトウェアエンジニアに向けても間口を開けるからだと思う。なので、おそらくこの本くらい簡単に入門できる本があるのがふさわしいのだ。
この電子書籍、誰か日本語訳しないかな? そのくらい良かった。安いしね。いまだと US$ 12.74 !

細かくあれこれ

特に良かった点、気になった点などを箇条書きで。

  • いきなり set hive.exec.mode.local.auto=true; してるのはちょっとなあ
    • 試すにはいいけど、これ実際のクラスタで設定すると変なのが local mode で実行されて悲しくなるんだよね*3
  • 複合データ型(array, struct, map等)について CREATE TABLE の実例つきで解説してあるのはすばらしい
    • これ wiki を見てもいまいちどう指定するのかわからなかったりしてて、実例があるのは本当に良いと思う
  • "Using Hive non-interactively" というトピック、Hive CLI から一発で(-e とか -f で)実行するものについての記述だった
    • hiveserverについての記述はこの本には無かったのがちょっと残念……誰も使ってないのかなhiveserver、便利なのに
  • JOINのトピックのところに "Multiple selects" という話が載ってるが、これはwiki では "Multiple inserts" と書かれているもの
    • なぜ違う名前で載せてしまったのか、skewの関係があるとはいえなぜJOINのトピックに載っているのか、がちょっと残念
    • Multiple inserts自体は非常に有用で、下手をするとJOINより多用するのでもうちょっと重視してもよかったと思う
  • JOINの使いかた、IN句のかわりに LEFT SEMI JOIN を使う、みたいなのも載ってると便利だったかも (参考)
  • ファイルフォーマットのトピックのところに圧縮について何も書かれていない、なんということだ
    • 圧縮率の違いとか言いだすと面倒だけど gz を扱う/出力する方法くらいはあって良いと思う、というかデータ量でかいのに圧縮ないと死ぬ
  • 関数の説明のところ
    • explodeの使いかたが詳しいのはかなり実践的だと思う
    • aggregate functions のところに GROUP BY ... WITH ROLLUP についての記述もあると良かったな、Hive 0.10 準拠なんだし
  • UDFの作りかた実例がある、しかも単純なUDFだけじゃなくて table-generating functions / aggregation functions についても実例つき!
    • なんだかんだでUDFを作らないとうまくいかないケースは多いと思うので、この短い本でこれがあるのはすばらしい
    • ただ「このコードをコンパイルしてjarにして」とだけあってその手順は省略されているのはちょっとつらい、Java が常識ではない人も世の中にはいる

あとひとつ、今だったら Impala なんかの説明もあると良かったのかもねえ。長くなるからやっぱり別のを読んでね、かな。

いろいろ細かいところはあるけど、でも全体的にはやっぱり超簡潔でわかりやすいと思う。何もないところから「さあHive使うか!」みたいな人はこの本を読んでみても損は無いんじゃないでしょうか。たぶん。

http://www.packtpub.com/apache-hive-essentials-how-to/book?utm_source=blog&utm_medium=link&utm_campaign=bookmention

Amazonでも買えるみたい。

Instant Apache Hive Essentials How-to
Darren Lee
Packt Publishing

プロの方

寝ても覚めてもHiveクエリのことを考えちゃったりしてるプロの方々はこちらを隅から隅まで読むといいと思います。

プログラミング Hive
プログラミング Hive
posted with amazlet at 13.09.26
Edward Capriolo Dean Wampler Jason Rutherglen
オライリージャパン
売り上げランキング: 298,543

*1:関数リストや各々の関数の使いかたみたいなのはほとんど載ってない

*2:CREATE TABLE, LOAD DATAなど

*3:手元ではoffにしてある