Tech Sketch Bucket of Technical Chips by TIS Inc.

AWS Tips -- AWS SDK for RubyでHiveスクリプトを実行する --

Pocket

この記事はeXcale Developer's Blogから移転されたものです。

eXcale開発チームの平井です。

Amazon Elastic Map Reduce(EMR)上で、Hiveを実行する方法はいくつかあります。
公式ドキュメントでは、AWSのManagement Consoleを用いる方法とAmazon Elastic MapReduce Ruby Client ( EMR CLI )を用いる方法が紹介されています。

CLIで実行する際は注意が必要で、CLIはRubyの1.8.7が必要になります。rbenvやrvmを利用すれば、それほど手間をかけずに1.8.7の環境を準備することはできますが、とはいえ、1.8.7は既にサポートが終了しているバージョンですので、1.8.7を使用するには抵抗があります。

というわけで、今回はAWSから提供されているAWS SDK for Rubyを使用してAmazon EMRでHiveを実行する方法をご紹介します。


eXcaleでは期間限定でサインアップキャンペーン実施中です。
キャンペーン内容についてはこちらを参照してください。


今回実行するHiveスクリプトは公式ドキュメントで紹介されているサンプルを使用します。

EMR CLIで実行する場合

EMR CLIでは以下のように実行します。(参考: 公式ドキュメント Launch a Hive Cluster
※ OUTPUTで指定しているS3バケット(myawsbucket)は、自分で用意したS3バケットに変更する必要がります。

AWS SDK for Rubyで実行する場合

CLIと同じことをAWS SDK for Rubyを使用して実行します。
実行するためのスクリプトは以下のようになります。

CLIでは、CLIが上手く処理してくれるため、少ない引数(--hive-scriptを指定)で実行する事ができましたが、AWS SDK for Rubyの場合には、Hiveスクリプトを実行する処理(Run Hive Script)だけではなく、Hiveスクリプトを実行するための環境をセットアップする処理(Setup Hive)もStepとして指定していく必要があります。AWS SDK for RubyのEMR関連のAPIリファレンスはこちらになります。

上記を実行するとjob_flow_idを出力して、スクリプト自体は終了します。

また、AWS Management Consoleで、job_flow_idのEMRクラスターが作成されていることが確認できると思います。

以下は、実行が終了したあとのEMRクラスターの詳細画面です。

いかがでしょうか、今回は、AWS SDK for Rubyを使用してAmazon EMRでHiveを実行する方法をご紹介しました。
AWS SDKを用いることでプログラマブルにAWSを利用できるので、積極的に利用して効率よくAWSを利用したいですね。

エンジニア採用中!私たちと一緒に働いてみませんか?