Amazon Athena をちょっとだけさわってみたよ


こんにちは、寺岡です。
この記事は TECHSCORE Advent Calendar 2016 の6日目の記事です。

今年もAWS最大のイベント、 re:Invent で沢山の新サービスが紹介されました。
今回は、その中で一番気になったAmazon Athena(アテナ)をちょっとだけさわってみた感想を書きたいと思います。

Amazon Athena とは?

  • クエリ課金で完全マネージドのサーバレス超高速クエリエンジン
  • S3保存してあるファイルに対してSQLを実行できる
  • CSVやJSON、Parquet、Apache WebLogsなど様々なファイルフォーマットに対応

一言で言ってしまえば、AWS版 Google BigQuery のようなサービスです。
まだ東京リージョンでは利用できませんが、バージニア北部とオレゴンリージョンで利用することができます。

サーバレスでフルマネージド

Athenaの特徴は、なんといってもサーバレスでフルマネージドであることでしょう。
今までAWSのビッグデータ処理サービスはEMRやRedshiftなどがありましたが、インスタンス専有型のため運用の手間やコストは決して低いものではありませんでした。

S3に保存してあるファイルに対してのSQLクエリには、EMR上でHive、Presto、Sparkなどを利用するケースが一般的でした。
しかし、EMRはブートストラップに数十分の時間がかかるため、使いたいときにすぐクエリ実行、というわけにはいきません。もちろんEMRを常時起動しておけば良いのですが、その分コストがかかってしまいます。
Athenaであれば、クエリ単位での課金となるため、好きなタイミングでクエリを実行し、使った分だけ料金を支払えば良いということになります。

Athenaの内部では Presto が利用されており、クエリフォーマットなどもほとんどPrestoそのままなため、EMRでPrestoを利用していたユーザは比較的に容易にAthenaへ移行できそうです。

テーブル定義とクエリ実行

Athenaを使ってクエリを実行するためには、あらかじめテーブルやカラムの定義を設定しておく必要があります。
テーブル定義は管理画面のCatalogManagerで設定するか、SQLのCREATE EXTERNAL TABLE 文を実行することにより設定できます。
対応しているファイルフォーマットは以下となります。

  • Apache WebLogs
  • CSV
  • TSV
  • TEXT(Custom Delimiter)
  • Parquet
  • ORC
  • JSON

CREATE EXTERNAL TABLE の記述はHiveそのままで、フォーマットの定義はSerDe指定となります。
例として、サンプルのELBログテーブルのCREATE TABLE文は以下のようになります。

管理画面のCatalogManagerでの管理画面でのテーブル定義はちょっと面倒だったので、Hiveに慣れている場合はCREATE EXTERNAL TABLE 文を書いてしまったほうが良いかもしれません。
スキーマディスカバリなど定義作成を簡略化できる機能があれば楽になるかと思うので、この辺りは今後の改善に期待したいところです。

AthenaはANSI SQLに対応しているため、クエリの実行に関しては特に戸惑うところはありませんでした。
SQLを書いて実行するだけ画面に結果が表示され、クエリ保存や、クエリ履歴の閲覧、結果のCSVダウンロードなども可能です。
SQLの細かな仕様についてはPrestoのSQLを参考にすればよいでしょう。

JDBC接続

JDBC接続によるリモートからのSQL実行にもしっかり対応されており、認証には他のAPIと同じように、IAMのCredentialを利用することができます。
接続方法の詳細は下記ページに記載されており、JDBCドライバのリンクもこちらにあります。
https://docs.aws.amazon.com/athena/latest/ug/connect-with-jdbc.html

JDBCさえあれば様々なツールと繋がる!これで勝つる!と思いながら手元のApache Sparkからアクセスしてみたのですが、Athena JDBC DriverはPreparedStatementに対応しておらず、残念ながらエラーになってしまいました。
BIツールなどとの連携を検討する場合、このあたりについては考慮する必要がありそうですね。

まとめ

API GatewayやLambdaなどのサーバレスアーキテクチャブームを巻きを越したAWSですが、機械学習やビッグデータ処理ではBigQueryの圧倒的な処理能力を擁するGoogleにやや分があるように感じていました。

今年のre:Invent ではAmazon Lex、Amazon Polly、Amazon Rekognition という機械学習3兄弟も発表されたことですし、それらも絡めてAmazon Athenaがどんな成長を遂げていくのか楽しみにしたいと思います。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です