SlideShare uma empresa Scribd logo
1 de 67
Baixar para ler offline
AWS Black Belt Online Seminar
Amazon Athena
アマゾンウェブサービスジャパン株式会社
ソリューションアーキテクト, 志村 誠
2017.03.01
[2017.06.23更新]
© 2017, Amazon Web Services, Inc. or its affiliates. All rights reserved.
自己紹介
2
所属:
アマゾンウェブサービスジャパン株式会社
業務:
ソリューションアーキテクト
(データサイエンス領域)
経歴:
Hadoopログ解析基盤の開発
データ分析
データマネジメントや組織のデータ活用
 
志村 誠 (Makoto Shimura)
Agenda
• Amazon Athena 概要
• クイックスタート
• Amazon Athena の構成
• データ設計とクエリ特性
• 使いどころ / Update / Tips
Amazon Athena の概要
4
Amazon Athena とは
S3上のデータに対して,標準 SQL による
インタラクティブなクエリを投げて
データの分析を行うことができるサービス
5
Amazon Athena とは
• re:Invent 2016 のキーノートにて発表された新サービス
• バージニア北部,オレゴン,オハイオ(2017/2/16追加)の3リージョンで提供
• クエリエンジン Presto と,Hive メタストア互換のデータカタログを使用
6 https://aws.amazon.com/jp/blogs/news/amazon-athena-interactive-sql-queries-for-data-in-amazon-s3/
Athena の特徴
7
サーバレスでインフラ管理の必要なし
大規模データに対しても高速なクエリ
事前のデータロードなしにS3に直接クエリ
スキャンしたデータに対しての従量課金
JDBC経由でBIツールから直接クエリ
Athena の想定ユースケース
8
ユースケース データ ユーザ
新しく取得したデータに対して,
DWに入れる価値があるか探索的に検証
新しく取得したデータ アナリスト
利用頻度の低い過去のデータに対する,
BIツール経由のアドホックな分析
コールドデータ アナリスト
Webサーバで障害が発生したときに,
ログを漁って原因追求
アクセスログ サーバ運用
大規模でないデータに対しての,
低頻度で実施するETL処理
生データ 開発者
クイックスタート
9
データベースの作成
10
CREATE DATABASE mydatabase
1. Athenaのマネジメント
コンソールを開く
2. クエリエディタから
データベースを作成
3. ページをリフレッシュ後
データベースの存在を確認
テーブルの作成
CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs (
`Date` DATE,
Time STRING,
Location STRING,
Bytes INT,
RequestIP STRING,
Method STRING,
Host STRING, Uri STRING,
Status INT,
Referrer STRING,
Os STRING,
Browser STRING,
BrowserVersion STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe’
WITH SERDEPROPERTIES (
"input.regex" = "^(?!#)([^ ]+)s+([^ ]+)s+([^ ]+)s+([^ ]+)s+([^ ]+)s+([^
]+)s+([^ ]+)s+([^ ]+)s+([^ ]+)s+([^
]+)s+[^(]+[(]([^;]+).*%20([^/]+)[/](.*)$”
)
LOCATION 's3://athena-examples/cloudfront/plaintext/';
1. クエリエディタからテーブルを作成
2. ページをリフレッシュして,
テーブルの存在を確認
クエリの実行
SELECT os, COUNT(*) count FROM cloudfront_logs
WHERE date BETWEEN date '2014-07-05’ AND date '2014-08-05’ GROUP BY os;
1. クエリエディタから
集計クエリを実行
2. コンソールに結果が表示
3. 過去のクエリについては
History で確認可能
(現状はコンソール確認のみ)
クエリの結果
1. Historyページから直接
結果をダウンロード
2. 結果はS3バケットに自動的に保存
されており,IAMユーザごとに
場所も確認 / 変更可能
3. デフォルトの保存先バケットは
aws-athena-query-results-${ACCOUNTID}-${REGION}
QuickSight から Athena に接続
14
1. QuickSight のメイン画面から
右上の Manage data を選択
2. さらに左上の New data set を
選択して,Athena をクリック
3. あとはガイダンスに従って,DB,
table と選んでいく
JDBCでのAthenaへの接続 (SQL Workbenchの例)
1. JDBC ドライバをダウンロード: s3://athena-downloads/drivers/AthenaJDBC41-1.0.0.jar
2. SQL Workbench の接続設定からドライバの追加
3. 接続先URL: jdbc:awsathena://athena.${REGION}.amazonaws.com:443
ユーザ名 / パスワード: aws_access_key_id / aws_secret_access_key
ドライバ: 2. で追加したドライバを指定
リージョンは以下の2つのいずれか
us-east-1, us-west-2
Amazon Athena の構成
16
Presto: 高速な分散クエリエンジン
• Athenaで使用しているクエリエンジン
• データをディスクに書き出さず,すべてメモリ上で処理
• ノード故障やメモリ溢れの場合にはクエリ自体が失敗
• バッチ処理ではなく,インタラクティブクエリ向け
17 https://prestodb.io/overview.html
参考: Presto のアーキテクチャ
Hive メタストア
• Athena のデータカタログと互換性がある
• Hive は SQL ライクな記法で,Hadoop上のバッチ処理を記述可能
• データソースに対してスキーマを定義し,テーブルのように扱える
• HDFS上のデータをベースとしており,標準 SQL とは異なる DDL を持つ
18 https://prestodb.io/overview.html
参考: Presto のアーキテクチャ
Athena のテーブル定義
• 標準のテーブル定義の後に,データ形式,圧縮形式,データの場所などを指定
• 既に Hive DDL がある場合,Athena で実行すれば,すぐクエリを投げられる
• 既存の EMR の Hive メタストア自体に,直接アクセスすることはできない
• schema-on-read なので,同一データに複数のスキーマを定義可能
19
CREATE EXTERNAL TABLE IF NOT EXISTS action_log (
user_id string,
action_category string,
action_detail string
year int,
month int,
)
PARTITIONED BY (year int, month int)
STORED AS PARQUET
LOCATION 's3://athena-examples/action-log/’
TBLPROPERTIES ('PARQUET.COMPRESS'='SNAPPY');
パーティション
データ形式
データの場所
圧縮形式
Athena のデータ型
種類 値
プリミティブ型
tinyint, smallint, int, bigint, boolean, float, double,
string, binary, timestamp, decimal, date, varchar, char
配列型 array<data_type>
map型 map<primitive_type, data_type>
struct型* struct<col_name: data_type>
union型 UNIONTYPE<data_type, data_type…>
20 * https://aws.amazon.com/jp/blogs/big-data/create-tables-in-amazon-athena-from-nested-json-and-mappings-using-jsonserde/
Athena のデータ形式 / 圧縮形式
21
項目 値 注意点
データ形式
CSV, TSV,
Parquet, ORC,
JSON, Regex,
Avro,
Cloudtrail Logs
• 2017/2/16 に Avro と OpenCSV
Serde* をサポート
• JSONについては Hive-JsonSerDe と
Openx-JsonSerDe の2つが利用可能
• CroudtrailSerDe**が利用可能
圧縮形式
Snappy, Zlib,
GZIP,
LZO
• 2017/4/6 に LZO をサポート
* Serialize/Deserialize の略で,データの入出力形式の変換クラス
** https://aws.amazon.com/jp/blogs/big-data/aws-cloudtrail-and-amazon-athena-dive-deep-to-analyze-security-compliance-and-operational-activity /
Athena のクエリ
• Presto と同様,標準 ANSI SQL に準拠したクエリ
• WITH句,Window関数,JOINなどに対応
• Presto で用意されている関数は,基本的に使用可能
22
[ WITH with_query [, ...] ]
SELECT [ ALL | DISTINCT ] select_expression [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition ]
[ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
[ HAVING condition ]
[ UNION [ ALL | DISTINCT ] union_query ]
[ ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST] [, ...] ]
[ LIMIT [ count | ALL ] ]
Athena のDDL / クエリにおける注意点
• 現状,CREATE TABLE AS SELECT 句は使用できない
• EXTERNAL TABLE のみが利用可能
• トランザクション処理,UDF / UDAF,ストアドプロシージ
ャ,VIEW等は未サポート
– 未サポートのDDLについては,マニュアルを参照*
• テーブルに対する変更処理は ACID を保証
– 複数人が同時に DDL を発行しても,成功するのは1つだけ
23 * http://docs.aws.amazon.com/athena/latest/ug/language-reference.html#unsupported-ddl
データ設計とクエリ特性
24
データ設計に影響する Athena の特性
• OLTP* ではなく OLAP** 向け
– そもそもトランザクションは未サポート
• ETL ではなく 分析向け
– データをフルスキャン & 変換するのは高コストな設計
– リトライ機構がないため,安定的なバッチ処理には向かない
• いかにして読み込むデータ量を減らすかが重要
– パーティション
– 列指向フォーマット
– 圧縮
25 * Online Transactional Processing ** Online Analytical Processing
典型的な OLAP の集計クエリ
• 基本パターンは,WHERE で条件を
絞り,GROUP BY で集約する
• ポイントは,WHERE と SELECT
• 読み込むデータ量をどれだけ減らす
かが,パフォーマンスに直結する
– スキャンする量が減れば,当然クエリ
の速度は向上する
– そしてクエリの費用も安くなる
26
SELECT
col1
, col2
, COUNT(col3)
, SUM(col3)
FROM
table1
INNER JOIN table2
ON table1.id = table2.id
WHERE
table1.id = table2.id
AND col4 = 1
AND col5 = “good”
GROUP BY
col1
, col2
パーティション
S3のオブジェクトキーの構成を CREATE TABLE に反映
WHERE で絞ったときに当該ディレクトリだけ読み込む
1テーブルあたりの最大パーティション数は20000
27
CREATE EXTERNAL TABLE IF NOT EXISTS action_log (
user_id string,
action_category string,
action_detail string
year int,
month int,
day int
)
PARTITIONED BY (year int, month int, day int)
STORED AS PARQUET
LOCATION 's3://athena-examples/action-log/’
TBLPROPERTIES ('PARQUET.COMPRESS'='SNAPPY');
s3://athena-examples/action-log/year=2017/month=03/day=01/data01.gz
パーティションの効果的な使い方
• WHERE で読み込み範囲を絞るときに頻繁に使われ
るカラムを,キーに指定する
• 絞り込みの効果が高いものが向いている
• ログデータの場合,日付が定番
• “year/month/day” と階層で指定する
28
SELECT
month
, action_category
, action_detail
, COUNT(user_id)
FROM
action_log
WHERE
year = 2016
AND month >= 4
AND month < 7
GROUP BY
month
, action_category
, action_detail
以下のS3パスだけが読み込まれる
s3://athena-examples/action-log/year=2016/month=04/day=01/
s3://athena-examples/action-log/year=2016/month=04/day=02/
s3://athena-examples/action-log/year=2016/month=04/day=03/
...
s3://athena-examples/action-log/year=2016/month=07/day=31/
パーティションの分け方
29
タイプ 形式 特徴
カラム名あり
(Hive 標準)
col1=val1/col2=val2/
• CREATE TABLE をしてから,MSCK REPAIR
TABLE を実行すればOK
• パーティションが増えた際も,MSCK REPAIR
TABLE を1回実行すればOK
• この形式にするために前処理が必要
カラム名なし  val1/val2/
• 自然な形式
• MSCK REPAIR TABLE が使えないため,
ALTER TABLE ADD PARTITION を,パーティ
ションの数だけ実行する必要がある
• 後からパーティションが増えた際も,増えたぶ
んだけ ALTER TABLE ADD PARTITION*
* あらかじめ先の期間までパーティションを作成しておけば,ファイルを置いた瞬間クエリ可能になる
列指向フォーマット
指向 特徴
列指向
• カラムごとにデータをまとめて保存
• 特定の列だけを扱う処理では,ファ
イル全体を読む必要がない
• OLAP向き
• ORC, Parquet など
行指向
• レコード単位でデータを保存
• 1カラムのみ必要でも,レコード全
体を読み込む必要がある
• OLTP向き
• TEXTFILE(CSV, TSV) など
30
ORCのデータ構造
https://orc.apache.org/docs/spec-intro.html
1 2 3 4 5 6
列指向フォーマットを使うメリット
OLAP 系の分析クエリを効率的に実行できる
• たいていの分析クエリは,一度のクエリで一部
のカラムしか使用しない
• 単純な統計データなら,メタデータで完結する
31
1 2 3 4 5 6 1 2 3 4 5 6
列指向行指向
I/O の効率があがる
• 圧縮と同時に使うことで I/O 効率がさらに向上
• カラムごとに分けられてデータが並んでいる
• 同じカラムは,似たような中身のデータが続く
ため,圧縮効率がよくなる
1 2 3 4 5 61 2 3 4 5 6
列指向行指向
列指向フォーマット & 圧縮の使い方
• CREATE 文で指定するだけ
• データは事前にフォーマット変換 & 圧縮の必要あり
• 分析クエリを投げる際に,使用するカラムだけを読み
こむようになる
32
SELECT
month
, action_category
, COUNT(action_category)
FROM
action_log
WHERE
year = 2016
AND month >= 4
AND month < 7
GROUP BY
month
, action_category
CREATE EXTERNAL TABLE IF NOT EXISTS action_log (
user_id string,
action_category string,
action_detail string
year int,
month int,
day int
)
PARTITIONED BY (year int, month int, day int)
STORED AS PARQUET
LOCATION 's3://athena-examples/action-log/’
TBLPROPERTIES ('PARQUET.COMPRESS'='SNAPPY');
パフォーマンスの比較
CREATE EXTERNAL TABLE IF NOT EXISTS elb_logs_pq (
request_timestamp string,
elb_name string,
request_ip string,
request_port int,
…
user_agent string,
ssl_cipher string,
ssl_protocol string
)
PARTITIONED BY (year int, month int, day int)
STORED AS PARQUET
LOCATION 's3://athena-examples/elb/parquet/’
TBLPROPERTIES("parquet.compress"="SNAPPY");
CREATE EXTERNAL TABLE IF NOT EXISTS elb_logs_raw
(
request_timestamp string,
elb_name string,
request_ip string,
request_port int,
backend_ip string,
…
user_agent string,
ssl_cipher string,
ssl_protocol string
)
PARTITIONED BY(year string, month string, day string)
ROW FORMAT SERDE
’org.apache.hadoop.hive.serde2.RegexSerDe’
WITH SERDEPROPERTIES (
'serialization.format' = '1',
'input.regex' = '([^ ]*) ([^ ]*) ([^ ]*):… ([A-Za-z0-9.-]*)$’
)
LOCATION 's3://athena-examples/elb/raw/';
Parquet & Snappy Regex & Raw file
パフォーマンスの比較
34 https://aws.amazon.com/jp/blogs/news/analyzing-data-in-s3-using-amazon-athena/
SELECT elb_name, uptime, downtime, cast(downtime as double)/cast(uptime as double) uptime_downtime_ratio
FROM (SELECT elb_name,
sum(case elb_response_code WHEN '200' THEN 1 ELSE 0 end) AS uptime,
sum(case elb_response_code WHEN '404' THEN 1 ELSE 0 end) AS downtime
FROM elb_logs_pq GROUP BY elb_name
)
データセット S3上のサイズ クエリ実行時間 スキャンデータ コスト
Regex & Raw file 1TB 236s 1.15TB $5.75
Parquet & Snappy 130GB 6.78s 2.51GB $0.013
削減 / スピードアップ 87%削減 34倍高速 99%削減 99.7%削減
Hive on EMR で列指向フォーマットに変換
• EMRを使えば,列指向フォーマットへの変換が手軽に実行可能
• Hive でテーブル定義して,データをロード
• INSERT OVERWRITE で書き込み
• パーティション分け等も同様に実施可能
• Spark での変換* も同様に可能
35
CREATE EXTERNAL TABLE parquet_hive (
requestBeginTime string,
adId string, impressionId string,
referrer string,
userAgent string,
userCookie string,
ip string
)
STORED AS PARQUET
LOCATION 's3://myBucket/myParquet/’
TBLPROPERTIES ('PARQUET.COMPRESS'='SNAPPY');
INSERT OVERWRITE TABLE parquet_hive
SELECT
requestbegintime
, adid
, impressionid
, referrer
, useragent
, usercookie
, ip
FROM impressions
WHERE dt='2009-04-14-04-05';
* https://github.com/awslabs/aws-big-data-blog/tree/master/aws-blog-spark-parquet-conversion
使いどころ
36
再掲: Athena の想定ユースケース
37
ユースケース データ ユーザ
新しく取得したデータに対して,
DWに入れる価値があるか探索的に検証
新しく取得したデータ アナリスト
利用頻度の低い過去のデータに対する,
BIツール経由のアドホックな分析
コールドデータ アナリスト
Webサーバで障害が発生したときに,
ログを漁って原因追求
アクセスログ サーバ運用
大規模でないデータに対しての,
低頻度で実施するETL処理
生データ 開発者
Athena が向いていない処理
• リトライ機構がなく,データを絞って高速にスキャンするア
ーキテクチャのため,バッチ処理には向かない
• 分析処理でも,大量データを長時間処理するのには向かない
38
ユースケース 適したサービス
大規模なデータに対して,フルスキャンを定期的に行う処理 EMR
テンポラリテーブルを活用した多段のETL処理 EMR, Glue*
サブクエリやJOINを駆使した複雑な集計処理 Redshift
高頻度なレポーティングのための大量の分析処理 Redshift
* Glue は 2017/3/1 時点ではプレビュー中で,正式リリースされてはいません
リファレンスアーキテクチャ
39
Athena
生ログに対する
調査,検証などの
アドホッククエリ DWロード前の軽い分析
小規模の新サービス
既存のデータパイプラインを補完する形で活用
ちょっとしたダッシュボードのバックは Athena が活躍
ユースケース: DataXu 社
40
Athena
CDN
Real Time Bidding
Reporting Platform
Kinesis ETL
(Spark SQL)
S3
Data Visualization
Reporting
180TB / 日のデータを Athena で分析
http://www.slideshare.net/AmazonWebServices/announcing-amazon-athena-instantly-analyze-your-data-in-s3-using-sql
利用企業のコメント
41
“Amazon S3 上のデータを直接クエリ処理しているのに、これまで使用して
きたシステムよりも高速にクエリ結果を得られたことに大変感銘を受けてい
ます。当社はワークロードを積極的に AWS に移行し、今後、Amazon
Athena を当社の分析プラットフォームの中核に据えるつもりです”
Gunosy 社
“オープンソースフォーマットを使用していることから、Amazon EMR のよ
うな、その他のソリューションで同じデータを活用し、相互運用することも
できます。Amazon Athena は特別な管理者を必要としないことから、すぐ
に使い始めることができました”
Japan Taxi 社
https://aws.amazon.com/jp/about-aws/whats-new/2016/12/introducing-amazon-athena/
リソースに関する制約
• 1アカウントあたりの最大クエリ同時実行数は5個
• クエリは30分でタイムアウト
• 1アカウントあたりの最大データベース数は100個
• 1データベースあたりの最大テーブル数は100個
• 1テーブルあたりの最大パーティション数は20000個
42
Athena のリソースには現状,以下のような制約がある*
* 上限緩和申請によって増やすことは可能
http://docs.aws.amazon.com/athena/latest/ug/service-limits.html
I/Oに関する制約
43
入力に関する制約
• どのリージョンの S3 からでもデータの読み込みは可能
• ただしリージョンをまたぐ場合,データ転送時間と,転送料金がかかる
• 暗号化データ読み込みは SSE-S3, SSE-KMS, CSE-KMS に対応
出力に関する制約
• Athena 実行リージョンの S3 にヘッダ付き csv で出力のみ
• 結果ファイルは SSE-S3, SSE-KMS, CSE-KMS の3方式で暗号化して出力可能
• SELECT INSERT には未対応
データアクセスに関する制約
• アクセス手段はコンソールまたはJDBCドライバ経由のみ
APIやCLIは提供していない
• データベース単位,テーブル単位など,リソースごとのアクセス制
御は未対応
• CREATE TABLE の際に,読み込ませない行を指定できない
(Hive DDL の ‘skip.header.line.count’ オプションは未対応*)
44
Athena のデータアクセスには現状,次のような制約がある
* Presto 自体が Hive の上記オプションに対応していないことに起因するもの
料金体系
• クエリ単位の従量課金
• S3 のデータスキャンに対して,$5 / 1TB の料金
• バイト数はメガバイト単位で切り上げられ,10MB 未満
のクエリは 10MB と計算される
• 別リージョンからデータを読み込む場合には,別途
S3のデータ転送料金がかかる
• DDL のクエリや,実行に失敗したクエリの料金は
無料
• パーティション,列指向フォーマット,圧縮を活用
することで,スキャンするデータ量を減らして,コ
スト削減が可能
Update
46
2017/2/16 に以下の新機能&性能改善をリリース
47
• 新たな SerDe のサポート(Avro, OpenCSVSerDe)
• オハイオリージョン(us-east-2)のローンチ
• テーブル追加ウィザードで,カラム名/型をまとめて入力可能に
新機能
性能改善
• 大規模な Parquet テーブルのクエリ速度を改善
http://docs.aws.amazon.com/athena/latest/ug/release-note-2017-02-20.html
OpenCSVSerDe
• 囲み文字を quoteChar で指定できる
• OpenCSVSerDe 自体の制約として,以下の2点に注意
– カラム型として string しか選択できない
– 文字列内の改行文字はサポートされていない
48
CREATE EXTERNAL TABLE myopencsvtable (
col1 string,
col2 string,
col3 string,
col4 string,
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde’
WITH SERDEPROPERTIES (
'separatorChar' = ',',
'quoteChar' = '"',
'escapeChar' = '’
)
STORED AS TEXTFILE
LOCATION 's3://location/of/csv/';
"a1", "a2", "a3", "a4”
,"1" ,"2" "abc", "def”
"a", "a1", "abc3", "ab4"
オハイオリージョンのローンチ
49
オハイオリージョンで Athena が実行可能に
2017/3/24 に以下の新機能&性能改善をリリース
50
• 新たな SerDe のサポート(CloudTrailSerDe*)
新機能
性能改善
• パーティション数が非常に多い場合のスキャン速度を改善
• MSCK REPAIR TABLE の速度を改善
• オハイオリージョンでも他リージョンの S3 からのデータ読み込み
が可能に
http://docs.aws.amazon.com/athena/latest/ug/release-notes.html
* https://aws.amazon.com/blogs/big-data/aws-cloudtrail-and-amazon-athena-dive-deep-to-analyze-security-compliance-and-operational-activity /
2017/4/6 に以下の新機能をリリース
51
• 入出力データの暗号化に対応
• 新バージョンの JDBC ドライバ (AthenaJDBC41-1.0.1.jar) リリース
• ALTER TABLE で カラムの追加,置き換え,変更処理が可能に
• LZO 圧縮形式に対応
新機能
http://docs.aws.amazon.com/athena/latest/ug/release-note-2017-04-04.html
* https://aws.amazon.com/blogs/big-data/aws-cloudtrail-and-amazon-athena-dive-deep-to-analyze-security-compliance-and-operational-activity /
入出力データの暗号化に対応
• 暗号化方式として, SSE-S3, SSE-KMS, CSE-KMS に対応
• 暗号化データへのクエリ,とクエリ結果の暗号化保存,は個別に設
定する必要がある
– そのため,両者で暗号化方式が違っていてもOK
• マネジメントコンソール,JDBCの両方に対応
52
入出力 手段 ユーザ
入力 共通 CREATE TABLE の tablproperties で指定
出力 コンソール 画面右上の Settings から暗号化方式を指定
JDBC JDBC ドライバのオプションで指定
2017/5/19 に以下の新機能をリリース
53
• Athena のクエリ関連処理が API に対応
• AWS SDK や AWS CLI も API に対応した形でアップデート
• 新バージョンの JDBC ドライバ (AthenaJDBC41-1.1.0.jar) リリー
ス
新機能
http://docs.aws.amazon.com/athena/latest/ug/release-note-2017-05-18.html#may-19-2017
性能改善
• クエリストリングの上限が 256KB に増加
2017/6/9, 6/22 に以下の新機能をリリース
54
• 6/9: アイルランドリージョン(eu-west-1)のローンチ
• 6/22: 東京リージョン(ap-northeast-1),シンガポールリージョ
ン(ap-southwest-1)のローンチ
新機能
http://docs.aws.amazon.com/athena/latest/ug/release-note-2017-05-18.html#may-19-2017
Tips
55
JOIN クエリのテーブルの並べ方
56
JOIN は大きなテーブルを左側に持ってくるほうがよい
右側のテーブルを各ノードに Broadcast して JOIN するため
Presto には Cost-based optimizer がないため,自動で最適化されない
ただし,結合条件によっては CROSS JOIN が行われる場合もあるので注意*
FROM
small_table
INNER JOIN large_table
ON large_table.id = small_table.id
FROM
large_table
INNER JOIN small_table
ON large_table.id = small_table.id
* https://aws.amazon.com/jp/blogs/news/top-10-performance-tuning-tips-for-amazon-athena/
GROUP BY のカラムの並べ方
57
GROUP BY に複数のカラムを指定する場合には,カーディナリティが高
い順番に並べるほうがよい
前に並んだカラムの値に応じて,各ノードにデータを割り振るため,カ
ーディナリティが低いデータだと,処理が十分に並列化されない
FROM
action_log
GROUP BY
low_card_col
, high_card_col
FROM
action_log
GROUP BY
high_card_col
, low_card_col
https://aws.amazon.com/jp/blogs/news/top-10-performance-tuning-tips-for-amazon-athena/
ORDER BY の件数を制限する
58
集計クエリで ORDER BY を行う場合,実際にはトップ100件くらいまでしか確認し
ないようなケースが多い
ORDER BY を行う際には,データを単一ノードに集約してソートするため,基本的に
計算を並列化できない
そのため,LIMIT 100 をつけてあげることで,ソート処理を高速に行うことができる
SELECT
*
FROM
lineitem
ORDER BY
l_shipdate
SELECT
*
FROM
lineitem
ORDER BY
l_shipdate
LIMIT
100
https://aws.amazon.com/jp/blogs/news/top-10-performance-tuning-tips-for-amazon-athena/
LIKE 演算子を使うべきではないケース
59
LIKE 演算子で多数の比較を行う場合には,RegEx で一括処理をしたほ
うが効率がよい
それぞれの LIKE 演算子について捜査が走るため,数が増えるほど,ま
た文字列が長くなるほど,処理が重くなる
WHERE
comment LIKE ‘%wake%’
, comment LIKE ‘%regular%’
, comment LIKE ‘%expres%’
, comment LIKE ‘%sleep%’
, comment LIKE ‘%hello%’
WHERE
regexp_like(comment, 'wake|regular|express|sleep|hello')
https://aws.amazon.com/jp/blogs/news/top-10-performance-tuning-tips-for-amazon-athena/
近似関数で計算コストを下げる
60
COUNT DISTINCT でユニーク数を求める際に,正確性より計算速度の
ほうが大事なときは,approx_distinct() で求めた近似値を使うとよい
approx_distinct() は HyperLogLog で近似値を求めているため,実際の
ユニーク数が多い場合でも高速に動作する
SELECT
COUNT(DISTINCT user_id)
SELECT
approx_distinct(user_id)
https://github.com/prestodb/presto/blob/master/presto-main/src/main/java/com/facebook/presto/operator/aggregation/ApproximateCountDistinctAggregations.java
https://github.com/airlift/airlift/blob/master/stats/src/main/java/io/airlift/stats/cardinality/HyperLogLog.java
https://github.com/airlift/airlift/blob/master/stats/docs/hll.md
テーブル / カラム名についての注意点
アンダースコアから始まるときは,バッククォートで囲む
アンダースコア以外の記号を使うことはできない
61
CREATE EXTERNAL TABLE _action_log (
_user_id string,
_action_category string,
CREATE EXTERNAL TABLE `_action_log`
(
`_user_id` string,
action_category string,
大文字小文字の区別はない
SELECT ACTION_CATEGORY
FROM `_ACTION_LOG`
テーブル / カラム名についての注意点
62
予約語を使うことも可能
ただし,DDL ではバッククォートで,クエリではダブルクォートで囲
む必要がある
クエリでシングルクォートで囲むと,単なる文字列として扱われる
CREATE EXTERNAL TABLE `join` (
`where` string,
action_category string,
SELECT “where”, ‘where’ TABLE FROM “join”;
Japan
China
Brazil
Japan
France
where
where
where
where
where
データの場所についての注意点
S3のキーについては,必ず最後を `/` で終える必要がある
‘/’ までが一致するキーが,すべてテーブルの中身として認識される
ワイルドカードや,オブジェクト名の直指定は不可
パーティションがある場合には,MSCK や ADD PARTITION を忘れずに
63
LOCATION 's3://athena-examples/action-log/’
LOCATION 's3://athena-examples/action-log’
LOCATION ‘s3://athena-examples/action-log/*’
LOCATION 's3://athena-examples/action-log/data.csv’
JSON データ読み込みについての注意点
正しい SerDe を指定する
64
ROW FORMAT SERDE ’org.apache.hive.hcatalog.data.JsonSerDe’
ROW FORMAT SERDE ’org.openx.data.jsonserde.JsonSerDe’
JSON レコード内に改行が入っているとエラーになる (SerDeの仕様)
{ “col1”: “val1”, “col2”: “val2” }
{
“col1”: “val1”,
“col2”: “val2”
}
https://aws.amazon.com/blogs/big-data/create-tables-in-amazon-athena-from-nested-json-and-mappings-using-jsonserde/
https://aws.amazon.com/premiumsupport/knowledge-center/error-json-athena/
不正な形式のレコードはオプションで無視することが可能
WITH SERDEPROPERTIES ('ignore.malformed.json' = 'true')
まとめ
65
まとめ
• Athena は S3 上のデータに対して,標準 SQL による
インタラクティブなクエリを投げてデータの分析を行う
ことができるサービス
• 分析系のアドホッククエリに向いており,QuickSight
や JDBC 経由で SQL クライアントから,簡単にアクセ
スできる
• パーティション,データフォーマット,圧縮形式により
パフォーマンスが向上
• すべてを Athena でやるのではなく,適材適所で使い分
ける
66
67

Mais conteúdo relacionado

Mais procurados

AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
 
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration ServiceAmazon Web Services Japan
 
20190320 AWS Black Belt Online Seminar Amazon EBS
20190320 AWS Black Belt Online Seminar Amazon EBS20190320 AWS Black Belt Online Seminar Amazon EBS
20190320 AWS Black Belt Online Seminar Amazon EBSAmazon Web Services Japan
 
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...Amazon Web Services Japan
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤Yu Otsubo
 
20190522 AWS Black Belt Online Seminar AWS Step Functions
20190522 AWS Black Belt Online Seminar AWS Step Functions20190522 AWS Black Belt Online Seminar AWS Step Functions
20190522 AWS Black Belt Online Seminar AWS Step FunctionsAmazon Web Services Japan
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAkihiro Kuwano
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Web Services Japan
 
Amazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオンAmazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオンAmazon Web Services Japan
 
20190806 AWS Black Belt Online Seminar AWS Glue
20190806 AWS Black Belt Online Seminar AWS Glue20190806 AWS Black Belt Online Seminar AWS Glue
20190806 AWS Black Belt Online Seminar AWS GlueAmazon Web Services Japan
 
20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)
20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)
20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)Amazon Web Services Japan
 
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順Amazon Web Services Japan
 
[AKIBA.AWS] VPCをネットワーク図で理解してみる
[AKIBA.AWS] VPCをネットワーク図で理解してみる[AKIBA.AWS] VPCをネットワーク図で理解してみる
[AKIBA.AWS] VPCをネットワーク図で理解してみるShuji Kikuchi
 
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonightAmazon Web Services Japan
 
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理Amazon Web Services Japan
 
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...Amazon Web Services Japan
 
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)Amazon Web Services Japan
 

Mais procurados (20)

AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
AWS Black Belt - AWS Glue
AWS Black Belt - AWS GlueAWS Black Belt - AWS Glue
AWS Black Belt - AWS Glue
 
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
20190320 AWS Black Belt Online Seminar Amazon EBS
20190320 AWS Black Belt Online Seminar Amazon EBS20190320 AWS Black Belt Online Seminar Amazon EBS
20190320 AWS Black Belt Online Seminar Amazon EBS
 
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤
 
20190522 AWS Black Belt Online Seminar AWS Step Functions
20190522 AWS Black Belt Online Seminar AWS Step Functions20190522 AWS Black Belt Online Seminar AWS Step Functions
20190522 AWS Black Belt Online Seminar AWS Step Functions
 
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティスAWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
 
Amazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオンAmazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオン
 
20190806 AWS Black Belt Online Seminar AWS Glue
20190806 AWS Black Belt Online Seminar AWS Glue20190806 AWS Black Belt Online Seminar AWS Glue
20190806 AWS Black Belt Online Seminar AWS Glue
 
20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)
20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)
20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)
 
AWS Black Belt Online Seminar AWS Amplify
AWS Black Belt Online Seminar AWS AmplifyAWS Black Belt Online Seminar AWS Amplify
AWS Black Belt Online Seminar AWS Amplify
 
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
AWS EC2 Eメール制限解除 - 逆引き(rDNS)設定 申請手順
 
[AKIBA.AWS] VPCをネットワーク図で理解してみる
[AKIBA.AWS] VPCをネットワーク図で理解してみる[AKIBA.AWS] VPCをネットワーク図で理解してみる
[AKIBA.AWS] VPCをネットワーク図で理解してみる
 
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight
 
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
 
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
20191002 AWS Black Belt Online Seminar Amazon EC2 Auto Scaling and AWS Auto S...
 
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
20191029 AWS Black Belt Online Seminar Elastic Load Balancing (ELB)
 

Destaque

BDA305 NEW LAUNCH! Intro to Amazon Redshift Spectrum: Now query exabytes of d...
BDA305 NEW LAUNCH! Intro to Amazon Redshift Spectrum: Now query exabytes of d...BDA305 NEW LAUNCH! Intro to Amazon Redshift Spectrum: Now query exabytes of d...
BDA305 NEW LAUNCH! Intro to Amazon Redshift Spectrum: Now query exabytes of d...Amazon Web Services
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoTreasure Data, Inc.
 
SIGMOD’12勉強会 -Session 7-
SIGMOD’12勉強会 -Session 7-SIGMOD’12勉強会 -Session 7-
SIGMOD’12勉強会 -Session 7-Takeshi Yamamuro
 
How to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analyticsHow to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analyticsJulien Le Dem
 
Parquet performance tuning: the missing guide
Parquet performance tuning: the missing guideParquet performance tuning: the missing guide
Parquet performance tuning: the missing guideRyan Blue
 
自動売買プログラムの作り方
自動売買プログラムの作り方自動売買プログラムの作り方
自動売買プログラムの作り方Shinya Furusake
 
ビットコインアドレス生成のロジック
ビットコインアドレス生成のロジックビットコインアドレス生成のロジック
ビットコインアドレス生成のロジックTomohide Murata
 
PyCon JP 2017Yuta Kitagami
PyCon JP 2017Yuta KitagamiPyCon JP 2017Yuta Kitagami
PyCon JP 2017Yuta KitagamiYuta Kitagami
 
AWS Black Belt Online Seminar 2017 Amazon Chime
AWS Black Belt Online Seminar 2017 Amazon ChimeAWS Black Belt Online Seminar 2017 Amazon Chime
AWS Black Belt Online Seminar 2017 Amazon ChimeAmazon Web Services Japan
 
AWS Shieldのご紹介 Managed DDoS Protection
AWS Shieldのご紹介 Managed DDoS ProtectionAWS Shieldのご紹介 Managed DDoS Protection
AWS Shieldのご紹介 Managed DDoS ProtectionAmazon Web Services Japan
 
PyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめPyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめJun Okazaki
 
2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット
2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット
2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリットRyo Nagaoka
 
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターンAWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターンAmazon Web Services Japan
 
暗号通貨勉強会
暗号通貨勉強会暗号通貨勉強会
暗号通貨勉強会Kohei Ogawa
 
Redash pythonで業務分析
Redash pythonで業務分析Redash pythonで業務分析
Redash pythonで業務分析創史 花村
 
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点についてdcubeio
 
golang.tokyo #6 (in Japanese)
golang.tokyo #6 (in Japanese)golang.tokyo #6 (in Japanese)
golang.tokyo #6 (in Japanese)Yuichi Murata
 
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介Kentoku
 
MongoDBの可能性の話
MongoDBの可能性の話MongoDBの可能性の話
MongoDBの可能性の話Akihiro Kuwano
 

Destaque (20)

BDA305 NEW LAUNCH! Intro to Amazon Redshift Spectrum: Now query exabytes of d...
BDA305 NEW LAUNCH! Intro to Amazon Redshift Spectrum: Now query exabytes of d...BDA305 NEW LAUNCH! Intro to Amazon Redshift Spectrum: Now query exabytes of d...
BDA305 NEW LAUNCH! Intro to Amazon Redshift Spectrum: Now query exabytes of d...
 
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 TokyoPrestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
 
SIGMOD’12勉強会 -Session 7-
SIGMOD’12勉強会 -Session 7-SIGMOD’12勉強会 -Session 7-
SIGMOD’12勉強会 -Session 7-
 
How to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analyticsHow to use Parquet as a basis for ETL and analytics
How to use Parquet as a basis for ETL and analytics
 
Parquet performance tuning: the missing guide
Parquet performance tuning: the missing guideParquet performance tuning: the missing guide
Parquet performance tuning: the missing guide
 
自動売買プログラムの作り方
自動売買プログラムの作り方自動売買プログラムの作り方
自動売買プログラムの作り方
 
ビットコインアドレス生成のロジック
ビットコインアドレス生成のロジックビットコインアドレス生成のロジック
ビットコインアドレス生成のロジック
 
PyCon JP 2017Yuta Kitagami
PyCon JP 2017Yuta KitagamiPyCon JP 2017Yuta Kitagami
PyCon JP 2017Yuta Kitagami
 
AWS Black Belt Online Seminar 2017 Amazon Chime
AWS Black Belt Online Seminar 2017 Amazon ChimeAWS Black Belt Online Seminar 2017 Amazon Chime
AWS Black Belt Online Seminar 2017 Amazon Chime
 
AWS Shieldのご紹介 Managed DDoS Protection
AWS Shieldのご紹介 Managed DDoS ProtectionAWS Shieldのご紹介 Managed DDoS Protection
AWS Shieldのご紹介 Managed DDoS Protection
 
PyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめPyconJP2017 Kivyによるアプリケーション開発のすすめ
PyconJP2017 Kivyによるアプリケーション開発のすすめ
 
2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット
2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット
2017-08-22 Python×Djangoで作るHR Techサービスのメリット・デメリット
 
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターンAWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
AWS Black Belt Online Seminar 2017 IoT向け最新アーキテクチャパターン
 
暗号通貨勉強会
暗号通貨勉強会暗号通貨勉強会
暗号通貨勉強会
 
Redash pythonで業務分析
Redash pythonで業務分析Redash pythonで業務分析
Redash pythonで業務分析
 
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
 
golang.tokyo #6 (in Japanese)
golang.tokyo #6 (in Japanese)golang.tokyo #6 (in Japanese)
golang.tokyo #6 (in Japanese)
 
Blockchain on Go
Blockchain on GoBlockchain on Go
Blockchain on Go
 
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
 
MongoDBの可能性の話
MongoDBの可能性の話MongoDBの可能性の話
MongoDBの可能性の話
 

Semelhante a AWS Black Belt Online Seminar 2017 Amazon Athena

Search Solutions on AWS
Search Solutions on AWSSearch Solutions on AWS
Search Solutions on AWSEiji Shinohara
 
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...Amazon Web Services Japan
 
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...Amazon Web Services Japan
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data PipelineAmazon Web Services Japan
 
AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-
AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-
AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-Amazon Web Services Japan
 
AWS Black Belt Techシリーズ Amazon ElastiCache
AWS Black Belt Techシリーズ Amazon ElastiCacheAWS Black Belt Techシリーズ Amazon ElastiCache
AWS Black Belt Techシリーズ Amazon ElastiCacheAmazon Web Services Japan
 
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL CompatibilityAmazon Web Services Japan
 
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)Keisuke Takahashi
 
AWS Black Belt Online Seminar 2017 Amazon EC2
AWS Black Belt Online Seminar 2017 Amazon EC2AWS Black Belt Online Seminar 2017 Amazon EC2
AWS Black Belt Online Seminar 2017 Amazon EC2Amazon Web Services Japan
 
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudyTakahiro Iwase
 
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティングAmazon Web Services Japan
 
AWS Black Belt Online Seminar 2016 Amazon EMR
AWS Black Belt Online Seminar 2016 Amazon EMRAWS Black Belt Online Seminar 2016 Amazon EMR
AWS Black Belt Online Seminar 2016 Amazon EMRAmazon Web Services Japan
 
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまでやりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまでDaisuke Masubuchi
 
re:Growth athena
re:Growth athenare:Growth athena
re:Growth athena淳 千葉
 
ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話Taiga Takahari
 

Semelhante a AWS Black Belt Online Seminar 2017 Amazon Athena (20)

Search Solutions on AWS
Search Solutions on AWSSearch Solutions on AWS
Search Solutions on AWS
 
Aws update jawstokyo-public
Aws update jawstokyo-publicAws update jawstokyo-public
Aws update jawstokyo-public
 
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
20180704 AWS Black Belt Online Seminar Amazon Elastic File System (Amazon EFS...
 
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ...
 
AWS Black Belt Techシリーズ AWS Data Pipeline
AWS Black Belt Techシリーズ  AWS Data PipelineAWS Black Belt Techシリーズ  AWS Data Pipeline
AWS Black Belt Techシリーズ AWS Data Pipeline
 
AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは AWS re:Invent2017で見た AWSの強さとは
AWS re:Invent2017で見た AWSの強さとは
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-
AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-
AWS Black Belt Online Seminar 2016 クラウドのためのアーキテクチャ設計 -ベストプラクティス-
 
AWS Black Belt Techシリーズ Amazon ElastiCache
AWS Black Belt Techシリーズ Amazon ElastiCacheAWS Black Belt Techシリーズ Amazon ElastiCache
AWS Black Belt Techシリーズ Amazon ElastiCache
 
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
 
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
Azure Database for PostgreSQL 入門 (PostgreSQL Conference Japan 2021)
 
AWS Black Belt Online Seminar 2017 Amazon EC2
AWS Black Belt Online Seminar 2017 Amazon EC2AWS Black Belt Online Seminar 2017 Amazon EC2
AWS Black Belt Online Seminar 2017 Amazon EC2
 
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy
 
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
 
AWS Black Belt Online Seminar 2016 Amazon EMR
AWS Black Belt Online Seminar 2016 Amazon EMRAWS Black Belt Online Seminar 2016 Amazon EMR
AWS Black Belt Online Seminar 2016 Amazon EMR
 
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまでやりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
やりたいことから考えるMicrosoft Azure 上の データストアの選び方とデータサイエンティスト向け活用法。KVSからDWHまで
 
re:Growth athena
re:Growth athenare:Growth athena
re:Growth athena
 
AWSデータベースアップデート2017
AWSデータベースアップデート2017AWSデータベースアップデート2017
AWSデータベースアップデート2017
 
aws blackbelt amazon elasticsearch service
aws blackbelt amazon elasticsearch service aws blackbelt amazon elasticsearch service
aws blackbelt amazon elasticsearch service
 
ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話
 

Mais de Amazon Web Services Japan

202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)Amazon Web Services Japan
 
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFSAmazon Web Services Japan
 
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device DefenderAmazon Web Services Japan
 
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現Amazon Web Services Japan
 
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...Amazon Web Services Japan
 
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Web Services Japan
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したことAmazon Web Services Japan
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用Amazon Web Services Japan
 
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdfAmazon Web Services Japan
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介Amazon Web Services Japan
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon Web Services Japan
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチAmazon Web Services Japan
 
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介Amazon Web Services Japan
 
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer ProfilesAmazon Web Services Japan
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Web Services Japan
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨Amazon Web Services Japan
 
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介Amazon Web Services Japan
 
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介Amazon Web Services Japan
 
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...Amazon Web Services Japan
 

Mais de Amazon Web Services Japan (20)

202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
 
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
 
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
 
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
 
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
 
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
 
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
 
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
 
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
 
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
 
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
 
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ...
 

Último

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Último (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

AWS Black Belt Online Seminar 2017 Amazon Athena

  • 1. AWS Black Belt Online Seminar Amazon Athena アマゾンウェブサービスジャパン株式会社 ソリューションアーキテクト, 志村 誠 2017.03.01 [2017.06.23更新] © 2017, Amazon Web Services, Inc. or its affiliates. All rights reserved.
  • 3. Agenda • Amazon Athena 概要 • クイックスタート • Amazon Athena の構成 • データ設計とクエリ特性 • 使いどころ / Update / Tips
  • 5. Amazon Athena とは S3上のデータに対して,標準 SQL による インタラクティブなクエリを投げて データの分析を行うことができるサービス 5
  • 6. Amazon Athena とは • re:Invent 2016 のキーノートにて発表された新サービス • バージニア北部,オレゴン,オハイオ(2017/2/16追加)の3リージョンで提供 • クエリエンジン Presto と,Hive メタストア互換のデータカタログを使用 6 https://aws.amazon.com/jp/blogs/news/amazon-athena-interactive-sql-queries-for-data-in-amazon-s3/
  • 8. Athena の想定ユースケース 8 ユースケース データ ユーザ 新しく取得したデータに対して, DWに入れる価値があるか探索的に検証 新しく取得したデータ アナリスト 利用頻度の低い過去のデータに対する, BIツール経由のアドホックな分析 コールドデータ アナリスト Webサーバで障害が発生したときに, ログを漁って原因追求 アクセスログ サーバ運用 大規模でないデータに対しての, 低頻度で実施するETL処理 生データ 開発者
  • 10. データベースの作成 10 CREATE DATABASE mydatabase 1. Athenaのマネジメント コンソールを開く 2. クエリエディタから データベースを作成 3. ページをリフレッシュ後 データベースの存在を確認
  • 11. テーブルの作成 CREATE EXTERNAL TABLE IF NOT EXISTS cloudfront_logs ( `Date` DATE, Time STRING, Location STRING, Bytes INT, RequestIP STRING, Method STRING, Host STRING, Uri STRING, Status INT, Referrer STRING, Os STRING, Browser STRING, BrowserVersion STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe’ WITH SERDEPROPERTIES ( "input.regex" = "^(?!#)([^ ]+)s+([^ ]+)s+([^ ]+)s+([^ ]+)s+([^ ]+)s+([^ ]+)s+([^ ]+)s+([^ ]+)s+([^ ]+)s+([^ ]+)s+[^(]+[(]([^;]+).*%20([^/]+)[/](.*)$” ) LOCATION 's3://athena-examples/cloudfront/plaintext/'; 1. クエリエディタからテーブルを作成 2. ページをリフレッシュして, テーブルの存在を確認
  • 12. クエリの実行 SELECT os, COUNT(*) count FROM cloudfront_logs WHERE date BETWEEN date '2014-07-05’ AND date '2014-08-05’ GROUP BY os; 1. クエリエディタから 集計クエリを実行 2. コンソールに結果が表示 3. 過去のクエリについては History で確認可能 (現状はコンソール確認のみ)
  • 14. QuickSight から Athena に接続 14 1. QuickSight のメイン画面から 右上の Manage data を選択 2. さらに左上の New data set を 選択して,Athena をクリック 3. あとはガイダンスに従って,DB, table と選んでいく
  • 15. JDBCでのAthenaへの接続 (SQL Workbenchの例) 1. JDBC ドライバをダウンロード: s3://athena-downloads/drivers/AthenaJDBC41-1.0.0.jar 2. SQL Workbench の接続設定からドライバの追加 3. 接続先URL: jdbc:awsathena://athena.${REGION}.amazonaws.com:443 ユーザ名 / パスワード: aws_access_key_id / aws_secret_access_key ドライバ: 2. で追加したドライバを指定 リージョンは以下の2つのいずれか us-east-1, us-west-2
  • 17. Presto: 高速な分散クエリエンジン • Athenaで使用しているクエリエンジン • データをディスクに書き出さず,すべてメモリ上で処理 • ノード故障やメモリ溢れの場合にはクエリ自体が失敗 • バッチ処理ではなく,インタラクティブクエリ向け 17 https://prestodb.io/overview.html 参考: Presto のアーキテクチャ
  • 18. Hive メタストア • Athena のデータカタログと互換性がある • Hive は SQL ライクな記法で,Hadoop上のバッチ処理を記述可能 • データソースに対してスキーマを定義し,テーブルのように扱える • HDFS上のデータをベースとしており,標準 SQL とは異なる DDL を持つ 18 https://prestodb.io/overview.html 参考: Presto のアーキテクチャ
  • 19. Athena のテーブル定義 • 標準のテーブル定義の後に,データ形式,圧縮形式,データの場所などを指定 • 既に Hive DDL がある場合,Athena で実行すれば,すぐクエリを投げられる • 既存の EMR の Hive メタストア自体に,直接アクセスすることはできない • schema-on-read なので,同一データに複数のスキーマを定義可能 19 CREATE EXTERNAL TABLE IF NOT EXISTS action_log ( user_id string, action_category string, action_detail string year int, month int, ) PARTITIONED BY (year int, month int) STORED AS PARQUET LOCATION 's3://athena-examples/action-log/’ TBLPROPERTIES ('PARQUET.COMPRESS'='SNAPPY'); パーティション データ形式 データの場所 圧縮形式
  • 20. Athena のデータ型 種類 値 プリミティブ型 tinyint, smallint, int, bigint, boolean, float, double, string, binary, timestamp, decimal, date, varchar, char 配列型 array<data_type> map型 map<primitive_type, data_type> struct型* struct<col_name: data_type> union型 UNIONTYPE<data_type, data_type…> 20 * https://aws.amazon.com/jp/blogs/big-data/create-tables-in-amazon-athena-from-nested-json-and-mappings-using-jsonserde/
  • 21. Athena のデータ形式 / 圧縮形式 21 項目 値 注意点 データ形式 CSV, TSV, Parquet, ORC, JSON, Regex, Avro, Cloudtrail Logs • 2017/2/16 に Avro と OpenCSV Serde* をサポート • JSONについては Hive-JsonSerDe と Openx-JsonSerDe の2つが利用可能 • CroudtrailSerDe**が利用可能 圧縮形式 Snappy, Zlib, GZIP, LZO • 2017/4/6 に LZO をサポート * Serialize/Deserialize の略で,データの入出力形式の変換クラス ** https://aws.amazon.com/jp/blogs/big-data/aws-cloudtrail-and-amazon-athena-dive-deep-to-analyze-security-compliance-and-operational-activity /
  • 22. Athena のクエリ • Presto と同様,標準 ANSI SQL に準拠したクエリ • WITH句,Window関数,JOINなどに対応 • Presto で用意されている関数は,基本的に使用可能 22 [ WITH with_query [, ...] ] SELECT [ ALL | DISTINCT ] select_expression [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ] [ HAVING condition ] [ UNION [ ALL | DISTINCT ] union_query ] [ ORDER BY expression [ ASC | DESC ] [ NULLS FIRST | NULLS LAST] [, ...] ] [ LIMIT [ count | ALL ] ]
  • 23. Athena のDDL / クエリにおける注意点 • 現状,CREATE TABLE AS SELECT 句は使用できない • EXTERNAL TABLE のみが利用可能 • トランザクション処理,UDF / UDAF,ストアドプロシージ ャ,VIEW等は未サポート – 未サポートのDDLについては,マニュアルを参照* • テーブルに対する変更処理は ACID を保証 – 複数人が同時に DDL を発行しても,成功するのは1つだけ 23 * http://docs.aws.amazon.com/athena/latest/ug/language-reference.html#unsupported-ddl
  • 25. データ設計に影響する Athena の特性 • OLTP* ではなく OLAP** 向け – そもそもトランザクションは未サポート • ETL ではなく 分析向け – データをフルスキャン & 変換するのは高コストな設計 – リトライ機構がないため,安定的なバッチ処理には向かない • いかにして読み込むデータ量を減らすかが重要 – パーティション – 列指向フォーマット – 圧縮 25 * Online Transactional Processing ** Online Analytical Processing
  • 26. 典型的な OLAP の集計クエリ • 基本パターンは,WHERE で条件を 絞り,GROUP BY で集約する • ポイントは,WHERE と SELECT • 読み込むデータ量をどれだけ減らす かが,パフォーマンスに直結する – スキャンする量が減れば,当然クエリ の速度は向上する – そしてクエリの費用も安くなる 26 SELECT col1 , col2 , COUNT(col3) , SUM(col3) FROM table1 INNER JOIN table2 ON table1.id = table2.id WHERE table1.id = table2.id AND col4 = 1 AND col5 = “good” GROUP BY col1 , col2
  • 27. パーティション S3のオブジェクトキーの構成を CREATE TABLE に反映 WHERE で絞ったときに当該ディレクトリだけ読み込む 1テーブルあたりの最大パーティション数は20000 27 CREATE EXTERNAL TABLE IF NOT EXISTS action_log ( user_id string, action_category string, action_detail string year int, month int, day int ) PARTITIONED BY (year int, month int, day int) STORED AS PARQUET LOCATION 's3://athena-examples/action-log/’ TBLPROPERTIES ('PARQUET.COMPRESS'='SNAPPY'); s3://athena-examples/action-log/year=2017/month=03/day=01/data01.gz
  • 28. パーティションの効果的な使い方 • WHERE で読み込み範囲を絞るときに頻繁に使われ るカラムを,キーに指定する • 絞り込みの効果が高いものが向いている • ログデータの場合,日付が定番 • “year/month/day” と階層で指定する 28 SELECT month , action_category , action_detail , COUNT(user_id) FROM action_log WHERE year = 2016 AND month >= 4 AND month < 7 GROUP BY month , action_category , action_detail 以下のS3パスだけが読み込まれる s3://athena-examples/action-log/year=2016/month=04/day=01/ s3://athena-examples/action-log/year=2016/month=04/day=02/ s3://athena-examples/action-log/year=2016/month=04/day=03/ ... s3://athena-examples/action-log/year=2016/month=07/day=31/
  • 29. パーティションの分け方 29 タイプ 形式 特徴 カラム名あり (Hive 標準) col1=val1/col2=val2/ • CREATE TABLE をしてから,MSCK REPAIR TABLE を実行すればOK • パーティションが増えた際も,MSCK REPAIR TABLE を1回実行すればOK • この形式にするために前処理が必要 カラム名なし  val1/val2/ • 自然な形式 • MSCK REPAIR TABLE が使えないため, ALTER TABLE ADD PARTITION を,パーティ ションの数だけ実行する必要がある • 後からパーティションが増えた際も,増えたぶ んだけ ALTER TABLE ADD PARTITION* * あらかじめ先の期間までパーティションを作成しておけば,ファイルを置いた瞬間クエリ可能になる
  • 30. 列指向フォーマット 指向 特徴 列指向 • カラムごとにデータをまとめて保存 • 特定の列だけを扱う処理では,ファ イル全体を読む必要がない • OLAP向き • ORC, Parquet など 行指向 • レコード単位でデータを保存 • 1カラムのみ必要でも,レコード全 体を読み込む必要がある • OLTP向き • TEXTFILE(CSV, TSV) など 30 ORCのデータ構造 https://orc.apache.org/docs/spec-intro.html
  • 31. 1 2 3 4 5 6 列指向フォーマットを使うメリット OLAP 系の分析クエリを効率的に実行できる • たいていの分析クエリは,一度のクエリで一部 のカラムしか使用しない • 単純な統計データなら,メタデータで完結する 31 1 2 3 4 5 6 1 2 3 4 5 6 列指向行指向 I/O の効率があがる • 圧縮と同時に使うことで I/O 効率がさらに向上 • カラムごとに分けられてデータが並んでいる • 同じカラムは,似たような中身のデータが続く ため,圧縮効率がよくなる 1 2 3 4 5 61 2 3 4 5 6 列指向行指向
  • 32. 列指向フォーマット & 圧縮の使い方 • CREATE 文で指定するだけ • データは事前にフォーマット変換 & 圧縮の必要あり • 分析クエリを投げる際に,使用するカラムだけを読み こむようになる 32 SELECT month , action_category , COUNT(action_category) FROM action_log WHERE year = 2016 AND month >= 4 AND month < 7 GROUP BY month , action_category CREATE EXTERNAL TABLE IF NOT EXISTS action_log ( user_id string, action_category string, action_detail string year int, month int, day int ) PARTITIONED BY (year int, month int, day int) STORED AS PARQUET LOCATION 's3://athena-examples/action-log/’ TBLPROPERTIES ('PARQUET.COMPRESS'='SNAPPY');
  • 33. パフォーマンスの比較 CREATE EXTERNAL TABLE IF NOT EXISTS elb_logs_pq ( request_timestamp string, elb_name string, request_ip string, request_port int, … user_agent string, ssl_cipher string, ssl_protocol string ) PARTITIONED BY (year int, month int, day int) STORED AS PARQUET LOCATION 's3://athena-examples/elb/parquet/’ TBLPROPERTIES("parquet.compress"="SNAPPY"); CREATE EXTERNAL TABLE IF NOT EXISTS elb_logs_raw ( request_timestamp string, elb_name string, request_ip string, request_port int, backend_ip string, … user_agent string, ssl_cipher string, ssl_protocol string ) PARTITIONED BY(year string, month string, day string) ROW FORMAT SERDE ’org.apache.hadoop.hive.serde2.RegexSerDe’ WITH SERDEPROPERTIES ( 'serialization.format' = '1', 'input.regex' = '([^ ]*) ([^ ]*) ([^ ]*):… ([A-Za-z0-9.-]*)$’ ) LOCATION 's3://athena-examples/elb/raw/'; Parquet & Snappy Regex & Raw file
  • 34. パフォーマンスの比較 34 https://aws.amazon.com/jp/blogs/news/analyzing-data-in-s3-using-amazon-athena/ SELECT elb_name, uptime, downtime, cast(downtime as double)/cast(uptime as double) uptime_downtime_ratio FROM (SELECT elb_name, sum(case elb_response_code WHEN '200' THEN 1 ELSE 0 end) AS uptime, sum(case elb_response_code WHEN '404' THEN 1 ELSE 0 end) AS downtime FROM elb_logs_pq GROUP BY elb_name ) データセット S3上のサイズ クエリ実行時間 スキャンデータ コスト Regex & Raw file 1TB 236s 1.15TB $5.75 Parquet & Snappy 130GB 6.78s 2.51GB $0.013 削減 / スピードアップ 87%削減 34倍高速 99%削減 99.7%削減
  • 35. Hive on EMR で列指向フォーマットに変換 • EMRを使えば,列指向フォーマットへの変換が手軽に実行可能 • Hive でテーブル定義して,データをロード • INSERT OVERWRITE で書き込み • パーティション分け等も同様に実施可能 • Spark での変換* も同様に可能 35 CREATE EXTERNAL TABLE parquet_hive ( requestBeginTime string, adId string, impressionId string, referrer string, userAgent string, userCookie string, ip string ) STORED AS PARQUET LOCATION 's3://myBucket/myParquet/’ TBLPROPERTIES ('PARQUET.COMPRESS'='SNAPPY'); INSERT OVERWRITE TABLE parquet_hive SELECT requestbegintime , adid , impressionid , referrer , useragent , usercookie , ip FROM impressions WHERE dt='2009-04-14-04-05'; * https://github.com/awslabs/aws-big-data-blog/tree/master/aws-blog-spark-parquet-conversion
  • 37. 再掲: Athena の想定ユースケース 37 ユースケース データ ユーザ 新しく取得したデータに対して, DWに入れる価値があるか探索的に検証 新しく取得したデータ アナリスト 利用頻度の低い過去のデータに対する, BIツール経由のアドホックな分析 コールドデータ アナリスト Webサーバで障害が発生したときに, ログを漁って原因追求 アクセスログ サーバ運用 大規模でないデータに対しての, 低頻度で実施するETL処理 生データ 開発者
  • 38. Athena が向いていない処理 • リトライ機構がなく,データを絞って高速にスキャンするア ーキテクチャのため,バッチ処理には向かない • 分析処理でも,大量データを長時間処理するのには向かない 38 ユースケース 適したサービス 大規模なデータに対して,フルスキャンを定期的に行う処理 EMR テンポラリテーブルを活用した多段のETL処理 EMR, Glue* サブクエリやJOINを駆使した複雑な集計処理 Redshift 高頻度なレポーティングのための大量の分析処理 Redshift * Glue は 2017/3/1 時点ではプレビュー中で,正式リリースされてはいません
  • 40. ユースケース: DataXu 社 40 Athena CDN Real Time Bidding Reporting Platform Kinesis ETL (Spark SQL) S3 Data Visualization Reporting 180TB / 日のデータを Athena で分析 http://www.slideshare.net/AmazonWebServices/announcing-amazon-athena-instantly-analyze-your-data-in-s3-using-sql
  • 41. 利用企業のコメント 41 “Amazon S3 上のデータを直接クエリ処理しているのに、これまで使用して きたシステムよりも高速にクエリ結果を得られたことに大変感銘を受けてい ます。当社はワークロードを積極的に AWS に移行し、今後、Amazon Athena を当社の分析プラットフォームの中核に据えるつもりです” Gunosy 社 “オープンソースフォーマットを使用していることから、Amazon EMR のよ うな、その他のソリューションで同じデータを活用し、相互運用することも できます。Amazon Athena は特別な管理者を必要としないことから、すぐ に使い始めることができました” Japan Taxi 社 https://aws.amazon.com/jp/about-aws/whats-new/2016/12/introducing-amazon-athena/
  • 42. リソースに関する制約 • 1アカウントあたりの最大クエリ同時実行数は5個 • クエリは30分でタイムアウト • 1アカウントあたりの最大データベース数は100個 • 1データベースあたりの最大テーブル数は100個 • 1テーブルあたりの最大パーティション数は20000個 42 Athena のリソースには現状,以下のような制約がある* * 上限緩和申請によって増やすことは可能 http://docs.aws.amazon.com/athena/latest/ug/service-limits.html
  • 43. I/Oに関する制約 43 入力に関する制約 • どのリージョンの S3 からでもデータの読み込みは可能 • ただしリージョンをまたぐ場合,データ転送時間と,転送料金がかかる • 暗号化データ読み込みは SSE-S3, SSE-KMS, CSE-KMS に対応 出力に関する制約 • Athena 実行リージョンの S3 にヘッダ付き csv で出力のみ • 結果ファイルは SSE-S3, SSE-KMS, CSE-KMS の3方式で暗号化して出力可能 • SELECT INSERT には未対応
  • 44. データアクセスに関する制約 • アクセス手段はコンソールまたはJDBCドライバ経由のみ APIやCLIは提供していない • データベース単位,テーブル単位など,リソースごとのアクセス制 御は未対応 • CREATE TABLE の際に,読み込ませない行を指定できない (Hive DDL の ‘skip.header.line.count’ オプションは未対応*) 44 Athena のデータアクセスには現状,次のような制約がある * Presto 自体が Hive の上記オプションに対応していないことに起因するもの
  • 45. 料金体系 • クエリ単位の従量課金 • S3 のデータスキャンに対して,$5 / 1TB の料金 • バイト数はメガバイト単位で切り上げられ,10MB 未満 のクエリは 10MB と計算される • 別リージョンからデータを読み込む場合には,別途 S3のデータ転送料金がかかる • DDL のクエリや,実行に失敗したクエリの料金は 無料 • パーティション,列指向フォーマット,圧縮を活用 することで,スキャンするデータ量を減らして,コ スト削減が可能
  • 47. 2017/2/16 に以下の新機能&性能改善をリリース 47 • 新たな SerDe のサポート(Avro, OpenCSVSerDe) • オハイオリージョン(us-east-2)のローンチ • テーブル追加ウィザードで,カラム名/型をまとめて入力可能に 新機能 性能改善 • 大規模な Parquet テーブルのクエリ速度を改善 http://docs.aws.amazon.com/athena/latest/ug/release-note-2017-02-20.html
  • 48. OpenCSVSerDe • 囲み文字を quoteChar で指定できる • OpenCSVSerDe 自体の制約として,以下の2点に注意 – カラム型として string しか選択できない – 文字列内の改行文字はサポートされていない 48 CREATE EXTERNAL TABLE myopencsvtable ( col1 string, col2 string, col3 string, col4 string, ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde’ WITH SERDEPROPERTIES ( 'separatorChar' = ',', 'quoteChar' = '"', 'escapeChar' = '’ ) STORED AS TEXTFILE LOCATION 's3://location/of/csv/'; "a1", "a2", "a3", "a4” ,"1" ,"2" "abc", "def” "a", "a1", "abc3", "ab4"
  • 50. 2017/3/24 に以下の新機能&性能改善をリリース 50 • 新たな SerDe のサポート(CloudTrailSerDe*) 新機能 性能改善 • パーティション数が非常に多い場合のスキャン速度を改善 • MSCK REPAIR TABLE の速度を改善 • オハイオリージョンでも他リージョンの S3 からのデータ読み込み が可能に http://docs.aws.amazon.com/athena/latest/ug/release-notes.html * https://aws.amazon.com/blogs/big-data/aws-cloudtrail-and-amazon-athena-dive-deep-to-analyze-security-compliance-and-operational-activity /
  • 51. 2017/4/6 に以下の新機能をリリース 51 • 入出力データの暗号化に対応 • 新バージョンの JDBC ドライバ (AthenaJDBC41-1.0.1.jar) リリース • ALTER TABLE で カラムの追加,置き換え,変更処理が可能に • LZO 圧縮形式に対応 新機能 http://docs.aws.amazon.com/athena/latest/ug/release-note-2017-04-04.html * https://aws.amazon.com/blogs/big-data/aws-cloudtrail-and-amazon-athena-dive-deep-to-analyze-security-compliance-and-operational-activity /
  • 52. 入出力データの暗号化に対応 • 暗号化方式として, SSE-S3, SSE-KMS, CSE-KMS に対応 • 暗号化データへのクエリ,とクエリ結果の暗号化保存,は個別に設 定する必要がある – そのため,両者で暗号化方式が違っていてもOK • マネジメントコンソール,JDBCの両方に対応 52 入出力 手段 ユーザ 入力 共通 CREATE TABLE の tablproperties で指定 出力 コンソール 画面右上の Settings から暗号化方式を指定 JDBC JDBC ドライバのオプションで指定
  • 53. 2017/5/19 に以下の新機能をリリース 53 • Athena のクエリ関連処理が API に対応 • AWS SDK や AWS CLI も API に対応した形でアップデート • 新バージョンの JDBC ドライバ (AthenaJDBC41-1.1.0.jar) リリー ス 新機能 http://docs.aws.amazon.com/athena/latest/ug/release-note-2017-05-18.html#may-19-2017 性能改善 • クエリストリングの上限が 256KB に増加
  • 54. 2017/6/9, 6/22 に以下の新機能をリリース 54 • 6/9: アイルランドリージョン(eu-west-1)のローンチ • 6/22: 東京リージョン(ap-northeast-1),シンガポールリージョ ン(ap-southwest-1)のローンチ 新機能 http://docs.aws.amazon.com/athena/latest/ug/release-note-2017-05-18.html#may-19-2017
  • 56. JOIN クエリのテーブルの並べ方 56 JOIN は大きなテーブルを左側に持ってくるほうがよい 右側のテーブルを各ノードに Broadcast して JOIN するため Presto には Cost-based optimizer がないため,自動で最適化されない ただし,結合条件によっては CROSS JOIN が行われる場合もあるので注意* FROM small_table INNER JOIN large_table ON large_table.id = small_table.id FROM large_table INNER JOIN small_table ON large_table.id = small_table.id * https://aws.amazon.com/jp/blogs/news/top-10-performance-tuning-tips-for-amazon-athena/
  • 57. GROUP BY のカラムの並べ方 57 GROUP BY に複数のカラムを指定する場合には,カーディナリティが高 い順番に並べるほうがよい 前に並んだカラムの値に応じて,各ノードにデータを割り振るため,カ ーディナリティが低いデータだと,処理が十分に並列化されない FROM action_log GROUP BY low_card_col , high_card_col FROM action_log GROUP BY high_card_col , low_card_col https://aws.amazon.com/jp/blogs/news/top-10-performance-tuning-tips-for-amazon-athena/
  • 58. ORDER BY の件数を制限する 58 集計クエリで ORDER BY を行う場合,実際にはトップ100件くらいまでしか確認し ないようなケースが多い ORDER BY を行う際には,データを単一ノードに集約してソートするため,基本的に 計算を並列化できない そのため,LIMIT 100 をつけてあげることで,ソート処理を高速に行うことができる SELECT * FROM lineitem ORDER BY l_shipdate SELECT * FROM lineitem ORDER BY l_shipdate LIMIT 100 https://aws.amazon.com/jp/blogs/news/top-10-performance-tuning-tips-for-amazon-athena/
  • 59. LIKE 演算子を使うべきではないケース 59 LIKE 演算子で多数の比較を行う場合には,RegEx で一括処理をしたほ うが効率がよい それぞれの LIKE 演算子について捜査が走るため,数が増えるほど,ま た文字列が長くなるほど,処理が重くなる WHERE comment LIKE ‘%wake%’ , comment LIKE ‘%regular%’ , comment LIKE ‘%expres%’ , comment LIKE ‘%sleep%’ , comment LIKE ‘%hello%’ WHERE regexp_like(comment, 'wake|regular|express|sleep|hello') https://aws.amazon.com/jp/blogs/news/top-10-performance-tuning-tips-for-amazon-athena/
  • 60. 近似関数で計算コストを下げる 60 COUNT DISTINCT でユニーク数を求める際に,正確性より計算速度の ほうが大事なときは,approx_distinct() で求めた近似値を使うとよい approx_distinct() は HyperLogLog で近似値を求めているため,実際の ユニーク数が多い場合でも高速に動作する SELECT COUNT(DISTINCT user_id) SELECT approx_distinct(user_id) https://github.com/prestodb/presto/blob/master/presto-main/src/main/java/com/facebook/presto/operator/aggregation/ApproximateCountDistinctAggregations.java https://github.com/airlift/airlift/blob/master/stats/src/main/java/io/airlift/stats/cardinality/HyperLogLog.java https://github.com/airlift/airlift/blob/master/stats/docs/hll.md
  • 61. テーブル / カラム名についての注意点 アンダースコアから始まるときは,バッククォートで囲む アンダースコア以外の記号を使うことはできない 61 CREATE EXTERNAL TABLE _action_log ( _user_id string, _action_category string, CREATE EXTERNAL TABLE `_action_log` ( `_user_id` string, action_category string, 大文字小文字の区別はない SELECT ACTION_CATEGORY FROM `_ACTION_LOG`
  • 62. テーブル / カラム名についての注意点 62 予約語を使うことも可能 ただし,DDL ではバッククォートで,クエリではダブルクォートで囲 む必要がある クエリでシングルクォートで囲むと,単なる文字列として扱われる CREATE EXTERNAL TABLE `join` ( `where` string, action_category string, SELECT “where”, ‘where’ TABLE FROM “join”; Japan China Brazil Japan France where where where where where
  • 63. データの場所についての注意点 S3のキーについては,必ず最後を `/` で終える必要がある ‘/’ までが一致するキーが,すべてテーブルの中身として認識される ワイルドカードや,オブジェクト名の直指定は不可 パーティションがある場合には,MSCK や ADD PARTITION を忘れずに 63 LOCATION 's3://athena-examples/action-log/’ LOCATION 's3://athena-examples/action-log’ LOCATION ‘s3://athena-examples/action-log/*’ LOCATION 's3://athena-examples/action-log/data.csv’
  • 64. JSON データ読み込みについての注意点 正しい SerDe を指定する 64 ROW FORMAT SERDE ’org.apache.hive.hcatalog.data.JsonSerDe’ ROW FORMAT SERDE ’org.openx.data.jsonserde.JsonSerDe’ JSON レコード内に改行が入っているとエラーになる (SerDeの仕様) { “col1”: “val1”, “col2”: “val2” } { “col1”: “val1”, “col2”: “val2” } https://aws.amazon.com/blogs/big-data/create-tables-in-amazon-athena-from-nested-json-and-mappings-using-jsonserde/ https://aws.amazon.com/premiumsupport/knowledge-center/error-json-athena/ 不正な形式のレコードはオプションで無視することが可能 WITH SERDEPROPERTIES ('ignore.malformed.json' = 'true')
  • 66. まとめ • Athena は S3 上のデータに対して,標準 SQL による インタラクティブなクエリを投げてデータの分析を行う ことができるサービス • 分析系のアドホッククエリに向いており,QuickSight や JDBC 経由で SQL クライアントから,簡単にアクセ スできる • パーティション,データフォーマット,圧縮形式により パフォーマンスが向上 • すべてを Athena でやるのではなく,適材適所で使い分 ける 66
  • 67. 67