Amazon Athena 初心者向けハンズオンの資料およびQA公開
こんにちは、SAの舟崎です。
2017/10/25に開催されましたオンラインハンズオン「Amazon Athena 初心者向けハンズオン」の資料が公開されました。当日参加者の皆様から頂いたQAと合わせてご紹介いたします。
Q: 列思考フォーマット&圧縮、のスライド(p17)の「圧縮」とはファイル圧縮という意味でしょうか?それとも情報の圧縮という意味でしょうか?
A: こちらはファイルの圧縮という意味になります.
Q:パーティションの例で、S3パスを「/year=2016/month=04/day=01/」という形式にしてましたが、「/2016/04/01/」という形式のパスには適用できないのでしょうか?
A: こちらの形でも適用可能です.以下の公式ドキュメントをご確認ください
http://docs.aws.amazon.com/athena/latest/ug/partitions.html
Q: 10MB未満のクエリを何度も実行することを考えた場合、実質的に1クエリ0.00555円と考えて良いということでしょうか?
A: 1ドル110円で換算した場合には,おおむねその金額と考えていただいて大丈夫です.
Q: 別リージョンS3のデータ転送量はs3の料金でしょうか?それともAthenaの料金になりますでしょうか?
A: S3 の転送料金になります
Q: プレビューテーブルにも料金かかりますか?
A: はい,課金されます
Q: s3://bucket名/tablename/year=2017/month=10/day=25/logfileという形だとwhere句で指定できるとのことでしたが、既存で下のように(tablename、year、month、dayがない)形で既にbucketを作成しています。この状態でwhere句を指定することは出来ますでしょうか。s3://bucket名/2017/10/25/logfile
A: 以下のドキュメントをご確認ください
http://docs.aws.amazon.com/athena/latest/ug/partitions.html
Q: SQL形式はPrestoで設定されているSQLでしょうか。それとも、標準SQL(ANSI・IEC)の仕様でしょうか。
A: Prestoで使用されている SQL が ANSI SQL 準拠であり,Athena は Presto と同様の SQL になるので,Athena は ANSI SQL の仕様となります.
Q: テーブル名や列名にマルチバイト文字を使用できますか?
A: 使用できません
Q: サブクエリの結果もスキャン対象データとして課金されますか?
A: クエリがどのような実行計画に変換されるのかに依存するので,一概に言い切るのは難しいのですが,もしサブクエリが最初に行われ,その結果に対してメインクエリが実行されるという実行計画であれば,サブクエリの結果はメモリ上に格納されることになるので(Presto では基本的にディスク書き出しをしないため),その場合にはスキャン料金はかかりません
Q: クエリ結果のダウンロードとRun Queryは別課金になりますでしょうか?
A: クエリ結果のダウンロードについては,S3 からデータを外に出す料金がかかりますので,クエリ実行とは別の料金になります
Q: 多重にネストされたjsonに対してのクエリを発行しようと思った場合、参考にすべきドキュメントを教えてください。
A: 以下のブログ記事をご参照下さい
https://aws.amazon.com/jp/blogs/news/create-tables-in-amazon-athena-from-nested-json-and-mappings-using-jsonserde/
Q: 結果格納バケットに入っている *.csv.metadata のファイルは何ですか?
A: クエリの結果を Athena のマネジメントコンソール状で表示する際に必要となる,メタデータが含まれたファイルになります.こちらを削除すると,結果がマネジメントコンソール上で正しく表示できなくなりますのでご注意ください
Q: 別バケットの検索用アカウント権限はどうつけるのですか?
A: 別アカウントにクエリを投げる権限という意味であれば,S3 のバケット持っているアカウント側で,当該 S3 バケットに対して,Athena のクエリを実行するアカウントからの読み取りとリストの権限をつけていただければと思います.詳細については,以下の公式ドキュメントの Amazon S3 Permissions の節をご確認ください
http://docs.aws.amazon.com/athena/latest/ug/access.html
Q: CSV,TSVなどの行指向フォーマットを、ORC、Parquetに変換するには、どうするのがよいのでしょうか?
A: Amazon EMR もしくは AWS Glue を用いて変換していただくのがおすすめになります.詳しくは以下の公式ドキュメントをご確認ください
http://docs.aws.amazon.com/athena/latest/ug/convert-to-columnar.html
http://docs.aws.amazon.com/athena/latest/ug/glue-best-practices.html
Q: Athenaのクエリのパラメーターを外部から動的に渡すことは出来ますか?
A: AWS SDK 経由で Athena にクエリを投げることができますので,パラメータを外から渡す形でクエリを実行するアプリケーションを実装していただければ,実現可能です
Q: 連続して、SQLを実行した場合、改行 + '/'すればよろしいでしょうか。
A: マネジメントコンソール上では,クエリは必ず 1 回の Run Query リクエストでは 1 つしか実行できません.SQLWorkbench/J などの,連続実行に対応した SQL クライアントをご利用いただければ,実現可能です
Q: Athenaではupdate SQLは実行できないということでしょうか?
A: はい,できません
Q: Locationに複数のバケット指定は可能でしょうか?
A: いいえ,できません
Q: それでは、クエリ実行結果が非常に大きい場合は Lambda Functionで多くのメモリを必要としたり、5分以内に完了させられず処理できない可能性があると考えれば良いでしょうか。
A: はい,ご認識の通りです.
Q: パーティションは、ディレクトリが増えるたびに、MSCK REPAIRを実施する必要がありますか?
A: はい,その通りです.こちらについては,ディレクトリの追加をフックして Lambda を起動して MSCK REPAIR TABLE を実行させることで,パーティション更新を自動化することが可能になります,また AWS Glue をご利用いただくことでも,パーティション更新を自動化することができます
Q: RedShift spectrumはathenaを使っていると聞きました。既にRedShiftを使っている場合、spectrumと比較してAthenaを選択する優位性はありますか?
A: すでに Redshift をお使いの場合,Spectrum をお使いいただくので十分なことが多いです.ただ現状の Spectrum は JSON 型のデータをサポートしておりませんので,こちらについては Athena をお使いいただくメリットがあります
Q: 複数ファイルを1つのsqlで実行できますか?
A: Athena は,読み込み対象のテーブルまたはパーティションで指定されたディレクトリ配下にあるファイルをすべて読み取りますので,複数ファイルを 1 つの SQL で読み込むのは標準的な動作となります.むしろ,単一ファイルを Athena のテーブルの LOCATION として指定することはできず,かならずディレクトリ(パスの最後が / で終わる)必要があります
Q: http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Athena.html#startQueryExecution-propertyの APIを実行する際に ResultConfiguration - OutputLocation を指定すれば、自分で結果を取得しなくても任意のS3バケットに結果出力できるということでしょうか?
A: S3 の結果を任意の場所に変更できることについては,ご認識の通りです.また API 経由でのリクエストの場合は,StartQueryExecution でクエリを実行し(クエリの終了を待たずに,実行開始したらレスポンスが返ってくる),実行状況は GetQueryExecution で確認し,結果をGetQueryResults で取得する,という形になります.
Q: AmazonAthenaFullAccess でなく、AmazonAthenaReadOnlyAccess のような IAMポリシーは用意されていないのでしょうか。
A: 現在のところ,AmazonAthenaFullAccess のみをご用意する形となっております
Q: Quick Sight→Athena→S3と繋げるとのことでしたが、AthenaとS3のリージョンが日本の場合は、データ転送課金はQuick Sight→Athena間ということでしょうか?
A: QuickSight は同一リージョンの Athena にしか接続できません.ですので記述いただいた構成で QuickSight から接続する場合には,Athena だけ東京リージョンといった使い方はできません
コメント