AWS Black Belt - AWS Glue

Amazon Web Services Japan
Amazon Web Services JapanAmazon Web Services Japan
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
1
アマゾン ウェブ サービス ジャパン株式会社
ソリューションアーキテクト 下佐粉 昭
2017.10.18
【AWS Black Belt Online Seminar】
AWS Glue
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
2
自己紹介
下佐粉 昭(しもさこ あきら)
Twitter - @simosako
所属:
アマゾン ウェブ サービス ジャパン
技術統括本部 エンタープライズソリューション部
ソリューションアーキテクト
好きなAWSサービス:Redshift, RDS, S3
人間が運用等から解放されて楽になるサービスが好きです
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
3
AWS Black Belt Online Seminar へようこそ!
質問を投げることができます!
Adobe ConnectのQ&Aウィンドウから、質問を書き込んでください。
(書き込んだ質問は、主催者にしか見えません)
今後のロードマップに関するご質問はお答えできませんのでご了承ください。
Twitterへツイートする際はハッシュタグ #awsblackbelt をご利用ください。
①Q&Aウィンドウ
右下のフォームに
質問を書き込んで
ください
②吹き出しマークで
送信してください
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
4
AWS Black Belt Online Seminar とは
AWSJのTechメンバがAWSに関する様々な事を紹介するオンラインセミナーです
【火曜 12:00~13:00】
主にAWSのソリューションや
業界カットでの使いどころなどを紹介
(例:IoT、金融業界向け etc.)
【水曜 18:00~19:00】
主にAWSサービスの紹介や
アップデートの解説
(例:EC2、RDS、Lambda etc.)
※開催曜日と時間帯は変更となる場合がございます。
最新の情報は下記をご確認下さい。
オンラインセミナーのスケジュール&申し込みサイト
• https://aws.amazon.com/jp/about-aws/events/webinars/
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
5
内容についての注意点
• 本資料では2017年10月18日時点のサービス内容および価格についてご説明しています。最
新の情報はAWS公式ウェブサイト(http://aws.amazon.com)にてご確認ください。
• 資料作成には十分注意しておりますが、資料内の価格とAWS公式ウェブサイト記載の価格に
相違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。
• 価格は税抜表記となっています。日本居住者のお客様が東京リージョンを使用する場合、別途
消費税をご請求させていただきます。
• AWS does not offer binding price quotes. AWS pricing is publicly available and is
subject to change in accordance with the AWS Customer Agreement available at
http://aws.amazon.com/agreement/. Any pricing information included in this
document is provided only as an estimate of usage charges for AWS services based
on certain information that you have provided. Monthly charges will be based on
your actual use of AWS services, and may vary from the estimates provided.
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
6
Agenda
• AWS Glueとは
• AWS Glueの機能
• データカタログ
• ジョブオーサリング
• オーケストレーション
• 開発環境
• 落穂ひろい
• まとめ
• 補足資料
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
7
AWS Glueとは
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
8
増え続けるデータに対応するために...
①データをデータレイクに集め、多様な分析につなげる
②分析は分散処理可能なインフラの上で実現
大規模データ分析 on クラウド
収集 データレイク
(保存)
分析 可視化
データを収集し、
データレイクへ
格納
全期間保存
共通APIでア
クセス
可視化
分散処理
可能な技術
分析
分散処理
可能な技術API
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
9
分析
分析
データレイク
AWSサービスでの実現例
①データをデータレイク(S3)に集め、多様な分析につなげる
②分析は分散処理可能なインフラの上で実現(Redshift, Athena, EMR...)
③データソースからの収集やプリプロセス(前処理、ETL)は?
収集
可視化
Amazon
Redshift
Anazon
QuickSight
Amazon S3
BI+EC2
プリプロセス
全データ 変形済
Amazon
Athena
?
?
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
10
AWS上のETL(Extract, Transform and Load)サービス
巨大データへのETL処理を...
「分散処理」で対応
「サーバレス」で提供
AWS Glue
https://aws.amazon.com/jp/glue/
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
11
分析
分析
データレイク
AWS Glueを入れた全体構成
①データをデータレイク(S3)に集め、多様な分析につなげる
②分析は分散処理可能なインフラの上で実現(Redshift, Athena, EMR...)
③プリプロセス(ETL)も分散処理で実現(AWS Glue)
収集
可視化
Amazon
Redshift
Amazon
QuickSight
Amazon S3
BI+EC2
プリプロセス
全データ 変形済
Amazon
Athena
AWS
Glue
AWS
Glue
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
12
AWS Glueの機能
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
13
AWS Glue – 全体像
データソースをクロールし、
メタデータを取得
メタデータは
データカタログで管理
メタデータを元に
ジョブを作成(PySpark)
ジョブはサーバレスな環境
で実行される
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
14
データカタログ
 Hiveメタストア互換のデータソース用メタデータリポジトリ
 テーブル、データ型、パーティションフォーマットを推測するために
ソースをクロール
 Redshift Spectrum, Athena, EMRのカタログとしても利用・連携可能
オーケストレーション
 分散処理でジョブを実行
 サーバレス - 利用したリソース分だけの支払い
ジョブオーサリング
 ETL処理のためのPythonコード(PySpark)を生成
 任意のIDEでコードを作成可能
AWS Glueの構成要素
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
15
Glueデータカタログ
データセットの発見・管理
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
16
メタストアとデータストア
Hive メタストア (Metastore):
• Hiveで表データそのものとは別に表の定義(メタデータ)を格納するために作成された仕組み
• 表データそのものはデータストア(HDFS, S3)に保存する
• 集中して付帯情報を管理することでコーディング側での管理負担を減らす
• Hive以外の多くのプロダクトも参照するようになり、標準的なメタデータ保存の仕組みに
Hive
Pig
Presto
表Aの定義(スキーマ)、位置、フォーマット、SerDe ...
メタストア
データストア
CSV
ファイル
Parquet
ファイル
JSON
ファイル
①メタデータ
にアクセス
②実データ
にアクセス
表Bの定義(スキーマ)、位置、フォーマット、SerDe ...
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
17
メタストアをGlueで提供する意味
(これまで)EMRではマスターノード上のMySQLもしくはRDSに保存
Glueではサーバレスのサービスで実現
• 運用管理自体が不要に
ディスク上限の管理、パッチ、可用性の確保...
• 安心して複数サービスから参照できる基盤の実現
クローラーによる自動登録でさらに管理負荷を軽減
• CREATE EXTERNAL TABLEを手動で実行不要
• 例)S3にファイルを置く=>クロール=>AthenaからSELECT実行
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
18
ETL(変換)
データレイク
データウェアハウス
データベース
Glue data
catalog
Amazon
RDS
Amazon
Redshift
Amazon S3
クロールで
メタデータ収集 Glue ETL
Uses
アドホック
分析
データウェアハウス
分析業務
Amazon
Athena
Redshift
Spectrum
EMR
(Hive/Spark)
Uses
Uses
Uses
データカタログでAWS上のメタデータを集中管理
クロールで
メタデータ収集
クロールで
メタデータ収集
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
19
表のメタデータをHiveメタストアで管理
メタデータ
• 列・プロパティ・型
• データロケーション(URI)
• 更新情報
等
クローラーによる自動チェックと登録
• Hiveパーティションを認識し登録を自動化
Glue データカタログ (Data catalog)
/mydata
/year=2017
/month=11/...
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
20
テーブルの
主要情報
テーブルの
プロパティ
テーブル
スキーマ
テーブル
パーティション
メタデータ(定義)の例
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
21
テーブルのスキーマバージョン一覧
スキーマバージョンの比較
スキーマのバージョン管理
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
22
手動でスキーマを更新可能 – 追加、削除、型の変更
スキーマの修正
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
23
クローラーが自動的にスキーマを推測
• ファイルタイプを識別し、どのような内容が
含まれるのかを分類(Classifier)しスキーマ、
ファイルタイプ、パーティションを抽出
• Grokフィルタでカスタマイズ可能
クローラーをスケジュール実行することで
新しいデータやスキーマの変更を発見
クローラーを使わず手動での登録も可能
ログはCloudWatch Logsに出力
クローラーによるデータカタログの自動更新
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
24
IAM Role
Glue クローラー
データレイク
DWH
データベース
Amazon
RDS
Amazon
Redshift
Amazon S3
JDBC 接続
オブジェクト接続
ビルトイン Classifier
MySQL/MariaDB
PostreSQL
Aurora
Oracle
SQL Server
Redshift
Avro
Parquet & ORC
JSON & BJSON
ログ
(Apache, Linux, MS, Ruby, Redis, and many others)
区切り形式
(comma, pipe, tab, semicolon)
圧縮フォーマット
(ZIP, BZIP, GZIP, LZ4, Snappy)
クローラーとClassifier
Classifierについてはこちらも参照
http://docs.aws.amazon.com/glue/latest/dg/add-classifier.html
Grokでカスタム
Classifierを作成可能
RDB
on EC2
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
25
接続の管理
JDBC(RDB)
• ホスト名(URL)、ID、パスワード
• セキュリティグループでアクセスを
制限
S3
• S3バケットを指定
• IAMでアクセスを制限
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
26
補足:カスタムClassifier
GorkパターンでカスタムClassifierを作成可能
• Grokパターンで表記できないものについては、カスタムパター
ン(正規表現ベース)で対応可能
%{TIMESTAMP_ISO8601:timestamp} ¥[%{MESSAGEPREFIX:message_prefix}¥]
%{CRAWLERLOGLEVEL:loglevel} : %{GREEDYDATA:message}
例)Grokパターン
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
27
ジョブオーサリング
使い慣れたツールでETLジョブのオーサリング、コード開発
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
28
ジョブを作成する
ジョブ=ETL処理を実行する単位
• PySpark(Python)で記述
• Extract(抽出)や、Load(取り込
み)は抽象化されているため、主に
Transform(変換)を既述する
■サンプルスクリプト集
https://github.com/awslabs/aws-
glue-samples
(※同じサイトにFAQもあり、こちらも必読)
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
29
• GUIでデータソース、ターゲット、列のマッピングを設
定することで雛形が生成される
• CSV→Parquetのフォーマット変換だけといった処理であ
ればPythonコード作成無しで実現
GUIでのコード雛形生成
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
30
ジョブスクリプトの基本
①初期化後、カタログ経由
でソースへアクセスし、
DynamicFrameを作成
②DynamicFrameを操作し
てデータ変換
③変換後のDynamicFrame
をカタログ経由でターゲッ
ト(Sink)に出力
## 初期化処理(importやGlueContextの作成、引数処理等)
glueContext = GlueContext(SparkContext.getOrCreate())
##ソースからデータを取り出す
ds0 = glueContext.create_dynamic_frame.from_catalog (
database = "mysql", table_name = "customer",
transformation_ctx = "ds0")
##ここで変換処理を既述
ds1 = ds0 ...
##ターゲット(Sink)への書き出し
ds2 = glueContext.write_dynamic_frame.from_catalog (
frame = ds1, database = "redshift",
table_name = "customer_dim",
redshift_tmp_dir = args["TempDir"],
transformation_ctx = "ds2")
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
31
①初期化~ソースへアクセス
• GlueContextはPySparkのSQLContextを継承してGlue独自の機能を追加したもの
• https://github.com/awslabs/aws-glue-libs/blob/master/awsglue/context.py
• GlueContextを作成し、create_dynamic_frame.from_catalogでカタログ経由で
DynamcFrameを作成する
• 補足) 1つのジョブの中で複数のデータベースにアクセスする場合、それらが同一サブネッ
トに配置されている必要がある
glueContext = GlueContext(SparkContext.getOrCreate())
ds0 = glueContext.create_dynamic_frame.from_catalog
(database = "flightsdb", table_name = "flightsparquet",transformation_ctx = "ds0")
※カタログを経由せず、glueContext.create_dynamic_frame.from_optionsで作成することも可能
※DataFrameをDynamicFrame.fromDFで変換してDynamicFrameを作成することも可能
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
32
②データ操作
DynamicFrameとDataFrame
データそのものを表すクラス
• DynamicFrame : データ全体
• DynamicRecord:データ1行
SparkSQLのDataFrameに似た概念
• DataFrameと違い、初期化時のスキーマ定義が不要
• 型が必用な時は自動で、もしくはユーザ制御で決定(Choice)
DataFrameとの互換性
• fromDF/toDFメソッドでDynamicFrame⇔DataFrameの変換が可能
• データ操作はDataFrameで実化し、データのIN/OUT時だけDynamicFrameを使
用するというコーディングも可能
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
33
DynamicFrameとChoice
DynamicFrameの列に複数の型を発見した場合、図のようにChoice可能な状態で維持される
• 同じ列に異なる型が混じったデータセットを扱うことを可能にする
• resolveChoiceで型が一致しない部分の解決方法を指定可能
• NULLにする、削除する、型ごとに別列に分ける、Struct型で保持する
medicare_dyf = glueContext.create_dynamic_frame.from_catalog (
database = "payments",table_name = "medicare")
medicare_dyf.printSchema()
root
|-- drg definition: string
|-- provider id: choice
| |-- long
| |-- string
provider id列はlongとstring両方のデータを持つ
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
34
ビルトインの変換クラス・メソッド
• DynamicFrameには変換のた
めのメソッドが用意されてい
る(今後も追加予定)
• 管理コンソールではクリック
でビルトイン変換のサンプル
コードが追加される
• DataFrameに変換して
SparkSQLで変換する方法も可
能
ビルトイン変換の一覧:
http://docs.aws.amazon.com/ja_jp/glue/latest/dg/built-in-transforms.html
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
35
変換の例:ジョイン
ジョインはDynamicFrameの joinメソッドで提供される
datasource0 = glueContext.create_dynamic_frame.from_catalog(...)
datasource1 = glueContext.create_dynamic_frame.from_catalog(...)
:
#datasouce0とdatasouce1をORDER_ID列でジョインする
datasource2=datasource0.join( ["ORDER_ID"],["ORDER_ID"], datasource1)
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
36
変換の例:フィルタリング
SplitRowsクラスで条件によるDynamicFrameの分割で実現
もしくはDataFrameに変換してフィルタリング
frame_collection = SplitRows.apply(my_dynamic_frame,{"age": {">": 21}}, "adults", "youths")
print frame_collection["youths"]
ret_df = my_dynamic_frame.toDF().filter("age > 21")
new_dyn_f = DynamicFrame.fromDF(ret_df, glueContext,"new_dyn_f")
my_dynamic_frame.toDF().createOrReplaceTempView("temptable")
sql_df = spark.sql("SELECT * FROM temptable WHERE age > 21")
new_dyn_f = DynamicFrame.fromDF(sql_df, glueContext,"new_dyn_f")
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
37
③ターゲット(Sink)への書き出し
ターゲットの列にDynamicFrameをあわせる処理
• ApplyMapping.apply – 列マッピングの定義
• SelectFields.Apply – 出力する列を設定
※これらは管理コンソールのウィザードで自動生成されるので、通常ユーザは作成しない
最後にwrite_dynamic_frame.from_catalogで出力
applymapping1 = ApplyMapping.apply(frame = datasource2,
mappings = [("COUNTRY", "string", "country", "string"),*中略*
, ("NAME", "string", "name", "string")], transformation_ctx = "applymapping1")
selectfields2 = SelectFields.apply(frame = applymapping1,
paths = ["mktsegment", "country", *中略* "cust_id"], transformation_ctx = "selectfields2")
datasink3 = glueContext.write_dynamic_frame.from_catalog
(frame = selectfields2, database = "demo-redshift",
table_name = "salesdwh_public_customer_dim", redshift_tmp_dir = args["TempDir"],
transformation_ctx = "datasink3")
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
38
補足:S3への書き出し時のフォーマット
write_dybamic_frame.from_optionsを使用することで、
任意のS3に対しフォーマットを指定して出力することが可
能です
ds2 = glueContext.write_dynamic_frame.from_options(
frame = ds1,
connection_type = "s3",
connection_options = {"path": "s3://demo1/output"},
format = "parquet",
transformation_ctx = "ds2")
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
39
ジョブへの引数の受け渡し
• ジョブ起動時にパラメータを指定することが可能
• Keyは'--'から始まるようにする(例:--Arg1)
• sys.argvに入るので、それをgetResolveOptionsで読み取りやすい形にして
利用する(引数名の大文字小文字を区別するので注意)
from awsglue.utils import getResolvedOptions
args = getResolvedOptions(sys.argv, ['INPUT', 'OUTPUT'])
print "The value of Arg1: " , args['INPUT']
print "The value of Arg2: " , args['OUTPUT']
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
40
オーケストレーション&リソース管理
フルマネージド、サーバレスのジョブ実行
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
41
ジョブの定義と実行
作成したJOBスクリプトを読み込んで実行
• IAMロールで権限を設定
ジョブの実行開始方法
• APIコール(手動)
• トリガー
リトライ制限の指定や、パラメータを渡すことが可能
実行ログはCloudWatch Logsに出力
CloudWatch Eventでジョブ実行・失敗のイベントを
フック可能(成功時に別のサービスを呼び出す等)
http://docs.aws.amazon.com/ja_jp/AmazonCloudW
atch/latest/events/EventTypes.html#glue-event-
types
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
42
ライブラリの利用
ジョブ実行時にライブラリを指定可能
• Python (2.7) ライブラリ
• S3にライブラリファイルを置いてジョ
ブ作成時に指定する
• S3のURLは複数をカンマで設定可能
• Pure Pythonコードであること
(pandas等C言語拡張に依存するライ
ブラリは利用できません)
• Java ライブラリ
• 同上。S3にJarを置いて指定する
• Pure JavaもしくはScala 2.11ベースの
コードのみ
参照)
http://docs.aws.amazon.com/glue/latest/dg/console-custom-created.html
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
43
トリガー
トリガー:ジョブを起動する
きっかけ
ジョブ開始のタイミング
• 先行ジョブ完了時
• スケジュール
• API(オンデマンド)
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
44
サーバレスのジョブ実行環境
サーバ管理や準備が不要
 ジョブに必要なインスタン
スが自動的に用意される
 ENIがVPC内に作成され、
ENI経由でVPC内リソース
にアクセス可能
お客様VPC お客様VPC
インスタンスプール
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
45
ジョブ実行時のVPC内へのアクセス
• ENI経由でアクセスされるため、
ジョブインスタンスはVPC内に存
在するように見える(※VPC内のリ
ソースにアクセスするジョブの場合)
• ENIにはサブネット内のプライベー
トIPが付与されるため、インター
ネットへのアクセスが無いプライ
ベートサブネットでも利用可能
• ジョブの中でプライベートサブ
ネットからS3にアクセスする必要
がある場合はVPC Endpointの設定
が必須
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
46
補足:Glueとセキュリティグループ
• ジョブが参照するリソース(RDB)はGlueジョブのクラスタから参照可能なようにセ
キュリティグループを設定する必要がある
• そのため、自己参照型(自セキュリティグループからのアクセスを全て許可するルー
ル)のセキュリティグループを作成し、それをリソースとGlueジョブに設定する
参照)
http://docs.aws.amazon.com/glue/latest/dg/setup-vpc-for-glue-access.html
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
47
ETLジョブの実行状況確認
• ETLジョブの状況は管理コンソールに表示される
• ログはCloudWatch Logsに出力される
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
48
開発環境
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
49
Development Endpoint
Development Endpoint
• ジョブ実行環境に直接接続するためのElasitic IP
アドレス。REPLにアクセス可能
• 作成時にSSH鍵を登録するが、通常のEC2用とは
別に用意することを推奨
開発用にNotebook(Zeppelin)サーバも提供
• http://zeppelin.apache.org/
• Endpointを選択→Actionから作成可能
• CloudFormationで自動生成
補足)
• Dev. Endpointを削除してもNotebookサーバは消えない
• Zeppelin自体のトラブルは~/zeppelin/logsにログが出力されるのでSSHでログインして確認
• スクリプト内でprintした値はCloudWatch Logs(Error logs)経由で出力される
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
50
Dev. EndpointとNotebook (Zeppelin)サーバ
補足:NotebookからDev.EndpointへはローカルポートをSSHでポートフォワードしているため、
Notebook作成時にDev.Endpointのプライベートキーが必用になる
Office
Internet
virtual private cloud
Notebook
(Zeppelin)
Server
HTTPS for
Zeppelin
Dev.
Endpoint
AWS Glue インスタンスプール
SSH port forward
SSH for REPL
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
51
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
52
落穂ひろい
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
53
GlueとIAM Role①
ETLジョブ用
• IAM Roleを作成しジョブ実行時に指定する
• AWSGlueServiceRoleが定義済なので、開発用等であればこのポリシーをアタッ
チするのが簡単
• IAMの名前はAWSGlueServiceRoleから始まる名前にする(もしくは
iam:PassRoleを含める)
• 詳細:http://docs.aws.amazon.com/ja_jp/glue/latest/dg/create-an-iam-role.html
Development endpointアクセス用:
• Notebookから各種リソースにアクセスをするために必用
• AWSGlueServiceNotebookRoleポリシーが定義済なので、これに加えて
AmazonS3FullAccess 等必用な権限を追加する
• AWSGlueServiceNotebookRoleから始まる名前にする(もしくは
iam:PassRoleを含める)
• 詳細: http://docs.aws.amazon.com/ja_jp/glue/latest/dg/create-an-iam-role-
notebook.html
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
54
GlueとIAM Role②
開発ユーザのIAM(管理コンソールログイン用)
• AWS管理のAWSGlueConsoleFullAccessと、加えて
CloudWatchLogsReadOnlyAccess 、
AWSCloudFormationReadOnlyAccess、
AmazonAthenaFullAccessが必用
• 詳細:
http://docs.aws.amazon.com/ja_jp/glue/latest/dg/attach-
policy-iam-user.html
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
55
AWS Glue 料金(*)
ETLジョブ実行:
• $0.44/DPU/時(課金は秒単位)
• 10分間未満の処理は10分として計算
されます
• 1 DPU = 4vCPU, 16GBメモリ
クローラー:
• $0.44/DPU/時(課金は秒単位)
• クローラーの処理能力は2DPUで計算
• 10分間未満の処理は10分として計算さ
れます
データカタログへのストア:
• 100万オブジェクトまで無料
• それ以上は10万オブジェクトあたり
$1/月
データカタログへのリクエスト:
• 100万リクエスト/月まで無料
• それ以上は100万リクエストあたりい
$1/月
その他:
• S3へのアクセスに掛かる費用等は別途
必要です
* 2017/10/18時点のU.S. East (N. Virginia), U.S. East (Ohio), U.S. West (Oregon)での価格です。最新の情報は以下URLを御確認ください。
https://aws.amazon.com/glue/pricing/
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
56
AWS Glue - Development Endpoint利用の費用
Development Endpoint経由の実行:
• DPU単位の費用がEndpoint作成した直後から発生(削除す
るまで)
• 不要な期間は削除することで費用を抑えることが可能
• DPUの数はEndpoint作成時に指定可能
• デフォルトは5。最低でも2必要
Zeppelin server :
• 通常のAmazon EC2利用費用
• m4.xlarge
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
57
まとめ
AWS Glueは、サーバレスで分散処理を実現するETLサービス
データカタログとクローラーがメタデータ管理を実現
ETL処理はPySparkで実現
• コーディングによる生産性
• 既存のPySparkライブラリの活用
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
58
補足資料
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
59
Amazon EMRとAWS Glueの違い
Amazon EMR AWS Glue
用途 汎用Hadoop/Spark環境 ETL処理に特化
(Sparkベース)
スケールアウト 可能(ユーザ設計) 可能(パラメータ指定)
サーバ管理 数クリックで指定した環境
が準備される
サーバ管理が不要
(サーバレス)
データレイク(S3)へ
の透過的なアクセス
可能 可能
プログラミング環境 Hadoopエコシステム上の
多様なアプリケーション
PySparkでETL処理を作成
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
60
FAQ
[Q] クローラーからデータソースにつながりません
[A] ドキュメントに沿って以下の設定を見直してください
• データソースに自己参照型のSGが設定されているか
• クローラーが必用な権限(Role)を持っているか
[Q] Glueを動かしているSparkのバージョンは?
[A] 現時点ではSpark 2.1です
[Q] クローラーが型を認識する際には全データをスキャンしているのですか?
[A] クローラーがデータ型を認識するために取得するデータは先頭2MB分のみ
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
61
FAQ
[Q] 既存HiveのMetastoreからGlueのData Catalogへ移行するには?
[A] 移行ツールを用意しています
• https://github.com/awslabs/aws-glue-
samples/tree/master/utilities/Hive_metastore_migration
[Q] ETL処理に関係ないプログラムを動かせますか?
[A] Jobの中ではPySparkで自由にプログラムを記述することが可能で
す。現時点では言語はPySparkのみのサポートであるため、E汎用的な
処理にはAmazon EMRも検討してください
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
62
FAQ
[Q] Jobプログラムの中から、Glueデータカタログが持つ接続情報を得るには?
[A] 以下のサンプルを参考にしてください
glue=boto3.client(service_name='glue', region_name='us-east-1',
endpoint_url='https://glue.us-east-1.amazonaws.com')
redshiftConnection=glue.get_connection(Name=target_database)
jdbc_url=redshiftConnection['Connection']['ConnectionProperties']['JDBC_CONNECTION_URL']
username= redshiftConnection['Connection']['ConnectionProperties']['USERNAME']
password= redshiftConnection['Connection']['ConnectionProperties']['PASSWORD']
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
63
FAQ
[Q] トリガーを設定したのにジョブが実行されません
[A] 以下のポイントを見直してください
• トリガーのステータスが ACTIVATED になっているかどうか
• トリガーを作ると CREATED となるので、"Trigger-->Actions-->Enable
Trigger" から ACTIVATED としてください。
• (トリガーのタイプが "Job completed" である場合) 最初のジョブがトリ
ガー経由で実行されているかどうか。
• 最初のジョブが手動で実行された場合、"Job completed" のトリガーに関連付
けられた後続のジョブは実行されません。これは各ジョブを個別にテスト可能
とするための仕様です。
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
64
参考資料
AWS Glue ホームページ
• https://aws.amazon.com/jp/glue/
AWS Glue 開発者ガイド(公式ドキュメント)
• https://aws.amazon.com/jp/documentation/glue/
AWS Glue ETL Code Samples (サンプルコード)
• https://github.com/awslabs/aws-glue-samples
AWS Glue用のPythonパッケージ(awsglue.*のソースコード)
• https://github.com/awslabs/aws-glue-libs/tree/master/awsglue
AWS Glue Data CatalogとHive Metastoreとの変換
• https://github.com/awslabs/aws-glue-
samples/tree/master/utilities/Hive_metastore_migration
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
65
参考資料
Redshift Data Source for Apache Spark
• RedshiftのデータをDataFrameで操作するためのライブラリ
• https://github.com/databricks/spark-redshift
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
66
Q&A
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
67
オンラインセミナー資料の配置場所
AWS クラウドサービス活用資料集
• http://aws.amazon.com/jp/aws-jp-introduction/
AWS Solutions Architect ブログ
• 最新の情報、セミナー中のQ&A等が掲載されています
• http://aws.typepad.com/sajp/
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
68
公式Twitter/Facebook
AWSの最新情報をお届けします
@awscloud_jp
検索
最新技術情報、イベント情報、お役立ち情報、
お得なキャンペーン情報などを日々更新しています!
もしくは
http://on.fb.me/1vR8yWm
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
69
AWSの導入、お問い合わせのご相談
AWSクラウド導入に関するご質問、お見積り、資料請求を
ご希望のお客様は以下のリンクよりお気軽にご相談ください
https://aws.amazon.com/jp/contact-us/aws-sales/
※「AWS 問い合わせ」で検索してください
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
70
AWS Black Belt Online Seminar
10月の配信予定
• 10月3日(火) 12:00~13:00 AWSへのネットワーク
接続とAWS上のネットワーク内部設計
• 10月4日(水) 18:00~19:00 Amazon GameLift
• 10月10日(火) 12:00~13:00 AWSにおけるアプリ認
証パターンのご紹介
• 10月11日(水) 18:00~19:00 Amazon Kinesis
• 10月18日(水) 18:00~19:00 AWS Glue
• 10月24日(火) 12:00~13:00 エグゼクティブ向け
AWS紹介
• 10月25日(水) 18:00~19:00 AWS Key
Management Service
申し込みサイト
• https://aws.amazon.com/jp/about-aws/events/webinars/
• (もしくは「AWS セミナー」で検索)
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
71
AWS Black Belt Online Seminar
11月の配信予定 (+ 一部先行予告)
• 11月1日(水) 18:00~19:00 Amazon EMR
• 11月9日(木) 12:00~13:00 Amazon Pinpoint
で始めるモバイルアプリのグロースハック
• 11月15日(水) 18:00~19:00 ELB Update -
Network Load Balancer(NLB)と関連サービス
• 11月21日(火) 12:00~13:00 AWS上の位置情報
• 11月22日(水) 18:00~19:00 AWS WAF
• 12月1日(金) 12:00~13:00 AWS re:Invent
2017 Report
申し込みサイト
• https://aws.amazon.com/jp/about-aws/events/webinars/
• (もしくは「AWS セミナー」で検索)
※下線はイレギュラー日程です。ご注意ください
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
72
簡単なアンケートにご協力ください
画面に表示されるアンケートフォームに入力をお願いします。
皆様のご意見は、今後の改善活動に活用させて頂きます。
コメント欄には1行で自由な内容を書き込み下さい。
例)
- 本オンラインセミナーへのご意見
- 今後オンラインセミナーで取り上げて欲しい題材
- 発表者への激励
等々…
※Q&A同様に書き込んだ内容は主催者にしか見えません
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
73
ご参加ありがとうございました
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
74
1 of 74

Recommended

AWS Black Belt Online Seminar 2017 Amazon Kinesis by
AWS Black Belt Online Seminar 2017 Amazon KinesisAWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon KinesisAmazon Web Services Japan
157.8K views60 slides
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz... by
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...Amazon Web Services Japan
52.5K views62 slides
20190806 AWS Black Belt Online Seminar AWS Glue by
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
17.7K views93 slides
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am... by
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...Amazon Web Services Japan
52.5K views90 slides
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス by
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
56.6K views64 slides
20190320 AWS Black Belt Online Seminar Amazon EBS by
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
76.8K views98 slides

More Related Content

What's hot

20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス- by
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-Amazon Web Services Japan
3.2K views122 slides
20200218 AWS Black Belt Online Seminar Next Generation Redshift by
20200218 AWS Black Belt Online Seminar Next Generation Redshift20200218 AWS Black Belt Online Seminar Next Generation Redshift
20200218 AWS Black Belt Online Seminar Next Generation RedshiftAmazon Web Services Japan
7.1K views74 slides
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib... by
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...Amazon Web Services Japan
17.2K views66 slides
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier by
20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier20190220 AWS Black Belt Online Seminar Amazon S3 / Glacier
20190220 AWS Black Belt Online Seminar Amazon S3 / GlacierAmazon Web Services Japan
42.5K views79 slides
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要 by
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要Amazon Web Services Japan
59.1K views86 slides
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤 by
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Amazon Web Services Japan
5.1K views42 slides

What's hot(20)

20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス- by Amazon Web Services Japan
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
20210330 AWS Black Belt Online Seminar AWS Glue -Glue Studioを使ったデータ変換のベストプラクティス-
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib... by Amazon Web Services Japan
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤 by Amazon Web Services Japan
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
20180704(20190520 Renewed) AWS Black Belt Online Seminar Amazon Elastic File ... by 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 ...
20191218 AWS Black Belt Online Seminar AWSのマネジメント&ガバナンス サービスアップデート by Amazon Web Services Japan
20191218 AWS Black Belt Online Seminar AWSのマネジメント&ガバナンス サービスアップデート20191218 AWS Black Belt Online Seminar AWSのマネジメント&ガバナンス サービスアップデート
20191218 AWS Black Belt Online Seminar AWSのマネジメント&ガバナンス サービスアップデート
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern by Amazon Web Services Japan
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019) by Noritaka Sekiyama
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Noritaka Sekiyama20.5K views

Viewers also liked

20161004 データ処理のプラットフォームとしてのpythonとpandas 東京 by
20161004 データ処理のプラットフォームとしてのpythonとpandas 東京20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
20161004 データ処理のプラットフォームとしてのpythonとpandas 東京Ryuji Tamagawa
3.2K views39 slides
Pysparkで始めるデータ分析 by
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Tanaka Yuichi
6.6K views21 slides
Pythonで入門するApache Spark at PyCon2016 by
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016Tatsuya Atsumi
5.8K views46 slides
深層学習の判断根拠を理解するための 研究とその意義 @PRMU 2017熊本 by
深層学習の判断根拠を理解するための 研究とその意義 @PRMU 2017熊本深層学習の判断根拠を理解するための 研究とその意義 @PRMU 2017熊本
深層学習の判断根拠を理解するための 研究とその意義 @PRMU 2017熊本Takahiro Kubo
14.9K views56 slides
[DL輪読会]Learning by Association - A versatile semi-supervised training method ... by
[DL輪読会]Learning by Association - A versatile semi-supervised training method ...[DL輪読会]Learning by Association - A versatile semi-supervised training method ...
[DL輪読会]Learning by Association - A versatile semi-supervised training method ...Deep Learning JP
2.3K views24 slides
[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた- by
[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-
[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-Deep Learning JP
36.2K views30 slides

Viewers also liked(20)

20161004 データ処理のプラットフォームとしてのpythonとpandas 東京 by Ryuji Tamagawa
20161004 データ処理のプラットフォームとしてのpythonとpandas 東京20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
Ryuji Tamagawa3.2K views
Pysparkで始めるデータ分析 by Tanaka Yuichi
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析
Tanaka Yuichi6.6K views
Pythonで入門するApache Spark at PyCon2016 by Tatsuya Atsumi
Pythonで入門するApache Spark at PyCon2016Pythonで入門するApache Spark at PyCon2016
Pythonで入門するApache Spark at PyCon2016
Tatsuya Atsumi5.8K views
深層学習の判断根拠を理解するための 研究とその意義 @PRMU 2017熊本 by Takahiro Kubo
深層学習の判断根拠を理解するための 研究とその意義 @PRMU 2017熊本深層学習の判断根拠を理解するための 研究とその意義 @PRMU 2017熊本
深層学習の判断根拠を理解するための 研究とその意義 @PRMU 2017熊本
Takahiro Kubo14.9K views
[DL輪読会]Learning by Association - A versatile semi-supervised training method ... by Deep Learning JP
[DL輪読会]Learning by Association - A versatile semi-supervised training method ...[DL輪読会]Learning by Association - A versatile semi-supervised training method ...
[DL輪読会]Learning by Association - A versatile semi-supervised training method ...
Deep Learning JP2.3K views
[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた- by Deep Learning JP
[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-
[DLHacks LT] PytorchのDataLoader -torchtextのソースコードを読んでみた-
Deep Learning JP36.2K views
PoisoningAttackSVM (ICMLreading2012) by Hidekazu Oiwa
PoisoningAttackSVM (ICMLreading2012)PoisoningAttackSVM (ICMLreading2012)
PoisoningAttackSVM (ICMLreading2012)
Hidekazu Oiwa4.1K views
もしその単語がなかったら by Hiroshi Nakagawa
もしその単語がなかったらもしその単語がなかったら
もしその単語がなかったら
Hiroshi Nakagawa6.7K views
PHP Version Up と AWS への移行 by gree_tech
PHP Version Up と AWS への移行PHP Version Up と AWS への移行
PHP Version Up と AWS への移行
gree_tech7.6K views
Hadoop Summit 2015: Performance Optimization at Scale, Lessons Learned at Twi... by Alex Levenson
Hadoop Summit 2015: Performance Optimization at Scale, Lessons Learned at Twi...Hadoop Summit 2015: Performance Optimization at Scale, Lessons Learned at Twi...
Hadoop Summit 2015: Performance Optimization at Scale, Lessons Learned at Twi...
Alex Levenson84.6K views
”30分”ぐらいでわかる「Kubernetes」について by Yuya Ohara
”30分”ぐらいでわかる「Kubernetes」について”30分”ぐらいでわかる「Kubernetes」について
”30分”ぐらいでわかる「Kubernetes」について
Yuya Ohara20.8K views
サイボウズのリモートワーク・リモートチーム by Ryo Mitoma
サイボウズのリモートワーク・リモートチームサイボウズのリモートワーク・リモートチーム
サイボウズのリモートワーク・リモートチーム
Ryo Mitoma12.1K views
kintoneの検索高速化への取り組み by Ryo Mitoma
kintoneの検索高速化への取り組みkintoneの検索高速化への取り組み
kintoneの検索高速化への取り組み
Ryo Mitoma29.1K views
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~ by nocchi_airport
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
StanとRでベイズ統計モデリング読書会 Chapter 7(7.6-7.9) 回帰分析の悩みどころ ~統計の力で歌うまになりたい~
nocchi_airport5K views
多項式あてはめで眺めるベイズ推定 ~今日からきみもベイジアン~ by tanutarou
多項式あてはめで眺めるベイズ推定~今日からきみもベイジアン~多項式あてはめで眺めるベイズ推定~今日からきみもベイジアン~
多項式あてはめで眺めるベイズ推定 ~今日からきみもベイジアン~
tanutarou11.8K views
新規事業・起業を妨げる「ビジネスモデル症候群」とは by Lean Startup Japan LLC
新規事業・起業を妨げる「ビジネスモデル症候群」とは新規事業・起業を妨げる「ビジネスモデル症候群」とは
新規事業・起業を妨げる「ビジネスモデル症候群」とは
Lean Startup Japan LLC111.3K views

Similar to AWS Black Belt - AWS Glue

[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight by
[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
5.8K views47 slides
aws blackbelt amazon elasticsearch service by
aws blackbelt amazon elasticsearch service aws blackbelt amazon elasticsearch service
aws blackbelt amazon elasticsearch service Amazon Web Services Japan
31.7K views71 slides
2011-04-21 クラウド勉強会 by
2011-04-21 クラウド勉強会2011-04-21 クラウド勉強会
2011-04-21 クラウド勉強会Koichiro Doi
2.2K views28 slides
RDS詳細 -ほぼ週刊AWSマイスターシリーズ第8回- by
RDS詳細 -ほぼ週刊AWSマイスターシリーズ第8回-RDS詳細 -ほぼ週刊AWSマイスターシリーズ第8回-
RDS詳細 -ほぼ週刊AWSマイスターシリーズ第8回-SORACOM, INC
8K views82 slides
Security Operations and Automation on AWS by
Security Operations and Automation on AWSSecurity Operations and Automation on AWS
Security Operations and Automation on AWSNoritaka Sekiyama
368 views49 slides
Best Practices for Running PostgreSQL on AWS by
Best Practices for Running PostgreSQL on AWSBest Practices for Running PostgreSQL on AWS
Best Practices for Running PostgreSQL on AWSAmazon Web Services Japan
5.3K views73 slides

Similar to AWS Black Belt - AWS Glue(20)

[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight by Amazon Web Services Japan
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight
[CTO Night & Day 2019] AWS で構築するデータレイク基盤と amazon.com での導入事例 #ctonight
2011-04-21 クラウド勉強会 by Koichiro Doi
2011-04-21 クラウド勉強会2011-04-21 クラウド勉強会
2011-04-21 クラウド勉強会
Koichiro Doi2.2K views
RDS詳細 -ほぼ週刊AWSマイスターシリーズ第8回- by SORACOM, INC
RDS詳細 -ほぼ週刊AWSマイスターシリーズ第8回-RDS詳細 -ほぼ週刊AWSマイスターシリーズ第8回-
RDS詳細 -ほぼ週刊AWSマイスターシリーズ第8回-
SORACOM, INC8K views
Security Operations and Automation on AWS by Noritaka Sekiyama
Security Operations and Automation on AWSSecurity Operations and Automation on AWS
Security Operations and Automation on AWS
Noritaka Sekiyama368 views
Amazon Kinesis Familyを活用したストリームデータ処理 by Amazon Web Services Japan
Amazon Kinesis Familyを活用したストリームデータ処理Amazon Kinesis Familyを活用したストリームデータ処理
Amazon Kinesis Familyを活用したストリームデータ処理
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう by Amazon Web Services Japan
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めようAWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ by Yasuhiro Matsuo
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャNoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
NoSQL on AWSで作る最新ソーシャルゲームアーキテクチャ
Yasuhiro Matsuo5K views
アマゾンクラウドの真価 by kaminashi
アマゾンクラウドの真価アマゾンクラウドの真価
アマゾンクラウドの真価
kaminashi1.1K views
Morning Session - AWS Serverless Ways by akitsukada
Morning Session - AWS Serverless WaysMorning Session - AWS Serverless Ways
Morning Session - AWS Serverless Ways
akitsukada984 views
Effective Data Lakes - ユースケースとデザインパターン by Noritaka Sekiyama
Effective Data Lakes - ユースケースとデザインパターンEffective Data Lakes - ユースケースとデザインパターン
Effective Data Lakes - ユースケースとデザインパターン
Noritaka Sekiyama625 views
AWSを用いたWebホスティング by SORACOM, INC
AWSを用いたWebホスティングAWSを用いたWebホスティング
AWSを用いたWebホスティング
SORACOM, INC7K views
20180710 AWS Black Belt Online Seminar AWS入門者向け: AWSで実現するウェブサイトホスティング by Amazon Web Services Japan
20180710 AWS Black Belt Online Seminar AWS入門者向け: AWSで実現するウェブサイトホスティング20180710 AWS Black Belt Online Seminar AWS入門者向け: AWSで実現するウェブサイトホスティング
20180710 AWS Black Belt Online Seminar AWS入門者向け: AWSで実現するウェブサイトホスティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング by Amazon Web Services Japan
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 BlackBelt Online Seminar 2017 Amazon CloudFront + AWS Lambda@Edge by Amazon Web Services Japan
AWS BlackBelt Online Seminar 2017 Amazon CloudFront + AWS Lambda@EdgeAWS BlackBelt Online Seminar 2017 Amazon CloudFront + AWS Lambda@Edge
AWS BlackBelt Online Seminar 2017 Amazon CloudFront + AWS Lambda@Edge

More from Amazon Web Services Japan

202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM) by
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
7K views62 slides
Infrastructure as Code (IaC) 談義 2022 by
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Amazon Web Services Japan
3.3K views21 slides
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート by
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Web Services Japan
2K views52 slides
20220409 AWS BLEA 開発にあたって検討したこと by
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したことAmazon Web Services Japan
3.7K views28 slides
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介 by
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介Amazon Web Services Japan
4.1K views36 slides
マルチテナント化で知っておきたいデータベースのこと by
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
8.9K views55 slides

More from Amazon Web Services Japan(20)

Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート by Amazon Web Services Japan
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介 by Amazon Web Services Japan
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
マルチテナント化で知っておきたいデータベースのこと by Amazon Web Services Japan
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ by Amazon Web Services Japan
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介 by Amazon Web Services Japan
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
202201 AWS Black Belt Online Seminar Apache Spark Performnace Tuning for AWS ... by 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 ...
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報 by Amazon Web Services Japan
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな by Amazon Web Services Japan
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5) by Amazon Web Services Japan
AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5)AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5)
AWS IoT Coreを オンプレミス環境と使う際の アーキテクチャ例 (AWS IoT Deep Dive #5)
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法 by Amazon Web Services Japan
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法
IoT@Loft#20 - IoTプラットフォームを進化さ せるAWSの活用方法
202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤 by Amazon Web Services Japan
202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤
202106 AWS Black Belt Online Seminar 小売現場のデータを素早くビジネス に活用するAWSデータ基盤

AWS Black Belt - AWS Glue

  • 1. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 1 アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 下佐粉 昭 2017.10.18 【AWS Black Belt Online Seminar】 AWS Glue
  • 2. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 2 自己紹介 下佐粉 昭(しもさこ あきら) Twitter - @simosako 所属: アマゾン ウェブ サービス ジャパン 技術統括本部 エンタープライズソリューション部 ソリューションアーキテクト 好きなAWSサービス:Redshift, RDS, S3 人間が運用等から解放されて楽になるサービスが好きです
  • 3. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 3 AWS Black Belt Online Seminar へようこそ! 質問を投げることができます! Adobe ConnectのQ&Aウィンドウから、質問を書き込んでください。 (書き込んだ質問は、主催者にしか見えません) 今後のロードマップに関するご質問はお答えできませんのでご了承ください。 Twitterへツイートする際はハッシュタグ #awsblackbelt をご利用ください。 ①Q&Aウィンドウ 右下のフォームに 質問を書き込んで ください ②吹き出しマークで 送信してください
  • 4. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 4 AWS Black Belt Online Seminar とは AWSJのTechメンバがAWSに関する様々な事を紹介するオンラインセミナーです 【火曜 12:00~13:00】 主にAWSのソリューションや 業界カットでの使いどころなどを紹介 (例:IoT、金融業界向け etc.) 【水曜 18:00~19:00】 主にAWSサービスの紹介や アップデートの解説 (例:EC2、RDS、Lambda etc.) ※開催曜日と時間帯は変更となる場合がございます。 最新の情報は下記をご確認下さい。 オンラインセミナーのスケジュール&申し込みサイト • https://aws.amazon.com/jp/about-aws/events/webinars/
  • 5. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 5 内容についての注意点 • 本資料では2017年10月18日時点のサービス内容および価格についてご説明しています。最 新の情報はAWS公式ウェブサイト(http://aws.amazon.com)にてご確認ください。 • 資料作成には十分注意しておりますが、資料内の価格とAWS公式ウェブサイト記載の価格に 相違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。 • 価格は税抜表記となっています。日本居住者のお客様が東京リージョンを使用する場合、別途 消費税をご請求させていただきます。 • AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided.
  • 6. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 6 Agenda • AWS Glueとは • AWS Glueの機能 • データカタログ • ジョブオーサリング • オーケストレーション • 開発環境 • 落穂ひろい • まとめ • 補足資料
  • 7. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 7 AWS Glueとは
  • 8. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 8 増え続けるデータに対応するために... ①データをデータレイクに集め、多様な分析につなげる ②分析は分散処理可能なインフラの上で実現 大規模データ分析 on クラウド 収集 データレイク (保存) 分析 可視化 データを収集し、 データレイクへ 格納 全期間保存 共通APIでア クセス 可視化 分散処理 可能な技術 分析 分散処理 可能な技術API
  • 9. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 9 分析 分析 データレイク AWSサービスでの実現例 ①データをデータレイク(S3)に集め、多様な分析につなげる ②分析は分散処理可能なインフラの上で実現(Redshift, Athena, EMR...) ③データソースからの収集やプリプロセス(前処理、ETL)は? 収集 可視化 Amazon Redshift Anazon QuickSight Amazon S3 BI+EC2 プリプロセス 全データ 変形済 Amazon Athena ? ?
  • 10. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 10 AWS上のETL(Extract, Transform and Load)サービス 巨大データへのETL処理を... 「分散処理」で対応 「サーバレス」で提供 AWS Glue https://aws.amazon.com/jp/glue/
  • 11. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 11 分析 分析 データレイク AWS Glueを入れた全体構成 ①データをデータレイク(S3)に集め、多様な分析につなげる ②分析は分散処理可能なインフラの上で実現(Redshift, Athena, EMR...) ③プリプロセス(ETL)も分散処理で実現(AWS Glue) 収集 可視化 Amazon Redshift Amazon QuickSight Amazon S3 BI+EC2 プリプロセス 全データ 変形済 Amazon Athena AWS Glue AWS Glue
  • 12. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 12 AWS Glueの機能
  • 13. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 13 AWS Glue – 全体像 データソースをクロールし、 メタデータを取得 メタデータは データカタログで管理 メタデータを元に ジョブを作成(PySpark) ジョブはサーバレスな環境 で実行される
  • 14. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 14 データカタログ  Hiveメタストア互換のデータソース用メタデータリポジトリ  テーブル、データ型、パーティションフォーマットを推測するために ソースをクロール  Redshift Spectrum, Athena, EMRのカタログとしても利用・連携可能 オーケストレーション  分散処理でジョブを実行  サーバレス - 利用したリソース分だけの支払い ジョブオーサリング  ETL処理のためのPythonコード(PySpark)を生成  任意のIDEでコードを作成可能 AWS Glueの構成要素
  • 15. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 15 Glueデータカタログ データセットの発見・管理
  • 16. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 16 メタストアとデータストア Hive メタストア (Metastore): • Hiveで表データそのものとは別に表の定義(メタデータ)を格納するために作成された仕組み • 表データそのものはデータストア(HDFS, S3)に保存する • 集中して付帯情報を管理することでコーディング側での管理負担を減らす • Hive以外の多くのプロダクトも参照するようになり、標準的なメタデータ保存の仕組みに Hive Pig Presto 表Aの定義(スキーマ)、位置、フォーマット、SerDe ... メタストア データストア CSV ファイル Parquet ファイル JSON ファイル ①メタデータ にアクセス ②実データ にアクセス 表Bの定義(スキーマ)、位置、フォーマット、SerDe ...
  • 17. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 17 メタストアをGlueで提供する意味 (これまで)EMRではマスターノード上のMySQLもしくはRDSに保存 Glueではサーバレスのサービスで実現 • 運用管理自体が不要に ディスク上限の管理、パッチ、可用性の確保... • 安心して複数サービスから参照できる基盤の実現 クローラーによる自動登録でさらに管理負荷を軽減 • CREATE EXTERNAL TABLEを手動で実行不要 • 例)S3にファイルを置く=>クロール=>AthenaからSELECT実行
  • 18. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 18 ETL(変換) データレイク データウェアハウス データベース Glue data catalog Amazon RDS Amazon Redshift Amazon S3 クロールで メタデータ収集 Glue ETL Uses アドホック 分析 データウェアハウス 分析業務 Amazon Athena Redshift Spectrum EMR (Hive/Spark) Uses Uses Uses データカタログでAWS上のメタデータを集中管理 クロールで メタデータ収集 クロールで メタデータ収集
  • 19. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 19 表のメタデータをHiveメタストアで管理 メタデータ • 列・プロパティ・型 • データロケーション(URI) • 更新情報 等 クローラーによる自動チェックと登録 • Hiveパーティションを認識し登録を自動化 Glue データカタログ (Data catalog) /mydata /year=2017 /month=11/...
  • 20. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 20 テーブルの 主要情報 テーブルの プロパティ テーブル スキーマ テーブル パーティション メタデータ(定義)の例
  • 21. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 21 テーブルのスキーマバージョン一覧 スキーマバージョンの比較 スキーマのバージョン管理
  • 22. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 22 手動でスキーマを更新可能 – 追加、削除、型の変更 スキーマの修正
  • 23. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 23 クローラーが自動的にスキーマを推測 • ファイルタイプを識別し、どのような内容が 含まれるのかを分類(Classifier)しスキーマ、 ファイルタイプ、パーティションを抽出 • Grokフィルタでカスタマイズ可能 クローラーをスケジュール実行することで 新しいデータやスキーマの変更を発見 クローラーを使わず手動での登録も可能 ログはCloudWatch Logsに出力 クローラーによるデータカタログの自動更新
  • 24. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 24 IAM Role Glue クローラー データレイク DWH データベース Amazon RDS Amazon Redshift Amazon S3 JDBC 接続 オブジェクト接続 ビルトイン Classifier MySQL/MariaDB PostreSQL Aurora Oracle SQL Server Redshift Avro Parquet & ORC JSON & BJSON ログ (Apache, Linux, MS, Ruby, Redis, and many others) 区切り形式 (comma, pipe, tab, semicolon) 圧縮フォーマット (ZIP, BZIP, GZIP, LZ4, Snappy) クローラーとClassifier Classifierについてはこちらも参照 http://docs.aws.amazon.com/glue/latest/dg/add-classifier.html Grokでカスタム Classifierを作成可能 RDB on EC2
  • 25. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 25 接続の管理 JDBC(RDB) • ホスト名(URL)、ID、パスワード • セキュリティグループでアクセスを 制限 S3 • S3バケットを指定 • IAMでアクセスを制限
  • 26. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 26 補足:カスタムClassifier GorkパターンでカスタムClassifierを作成可能 • Grokパターンで表記できないものについては、カスタムパター ン(正規表現ベース)で対応可能 %{TIMESTAMP_ISO8601:timestamp} ¥[%{MESSAGEPREFIX:message_prefix}¥] %{CRAWLERLOGLEVEL:loglevel} : %{GREEDYDATA:message} 例)Grokパターン
  • 27. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 27 ジョブオーサリング 使い慣れたツールでETLジョブのオーサリング、コード開発
  • 28. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 28 ジョブを作成する ジョブ=ETL処理を実行する単位 • PySpark(Python)で記述 • Extract(抽出)や、Load(取り込 み)は抽象化されているため、主に Transform(変換)を既述する ■サンプルスクリプト集 https://github.com/awslabs/aws- glue-samples (※同じサイトにFAQもあり、こちらも必読)
  • 29. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 29 • GUIでデータソース、ターゲット、列のマッピングを設 定することで雛形が生成される • CSV→Parquetのフォーマット変換だけといった処理であ ればPythonコード作成無しで実現 GUIでのコード雛形生成
  • 30. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 30 ジョブスクリプトの基本 ①初期化後、カタログ経由 でソースへアクセスし、 DynamicFrameを作成 ②DynamicFrameを操作し てデータ変換 ③変換後のDynamicFrame をカタログ経由でターゲッ ト(Sink)に出力 ## 初期化処理(importやGlueContextの作成、引数処理等) glueContext = GlueContext(SparkContext.getOrCreate()) ##ソースからデータを取り出す ds0 = glueContext.create_dynamic_frame.from_catalog ( database = "mysql", table_name = "customer", transformation_ctx = "ds0") ##ここで変換処理を既述 ds1 = ds0 ... ##ターゲット(Sink)への書き出し ds2 = glueContext.write_dynamic_frame.from_catalog ( frame = ds1, database = "redshift", table_name = "customer_dim", redshift_tmp_dir = args["TempDir"], transformation_ctx = "ds2")
  • 31. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 31 ①初期化~ソースへアクセス • GlueContextはPySparkのSQLContextを継承してGlue独自の機能を追加したもの • https://github.com/awslabs/aws-glue-libs/blob/master/awsglue/context.py • GlueContextを作成し、create_dynamic_frame.from_catalogでカタログ経由で DynamcFrameを作成する • 補足) 1つのジョブの中で複数のデータベースにアクセスする場合、それらが同一サブネッ トに配置されている必要がある glueContext = GlueContext(SparkContext.getOrCreate()) ds0 = glueContext.create_dynamic_frame.from_catalog (database = "flightsdb", table_name = "flightsparquet",transformation_ctx = "ds0") ※カタログを経由せず、glueContext.create_dynamic_frame.from_optionsで作成することも可能 ※DataFrameをDynamicFrame.fromDFで変換してDynamicFrameを作成することも可能
  • 32. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 32 ②データ操作 DynamicFrameとDataFrame データそのものを表すクラス • DynamicFrame : データ全体 • DynamicRecord:データ1行 SparkSQLのDataFrameに似た概念 • DataFrameと違い、初期化時のスキーマ定義が不要 • 型が必用な時は自動で、もしくはユーザ制御で決定(Choice) DataFrameとの互換性 • fromDF/toDFメソッドでDynamicFrame⇔DataFrameの変換が可能 • データ操作はDataFrameで実化し、データのIN/OUT時だけDynamicFrameを使 用するというコーディングも可能
  • 33. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 33 DynamicFrameとChoice DynamicFrameの列に複数の型を発見した場合、図のようにChoice可能な状態で維持される • 同じ列に異なる型が混じったデータセットを扱うことを可能にする • resolveChoiceで型が一致しない部分の解決方法を指定可能 • NULLにする、削除する、型ごとに別列に分ける、Struct型で保持する medicare_dyf = glueContext.create_dynamic_frame.from_catalog ( database = "payments",table_name = "medicare") medicare_dyf.printSchema() root |-- drg definition: string |-- provider id: choice | |-- long | |-- string provider id列はlongとstring両方のデータを持つ
  • 34. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 34 ビルトインの変換クラス・メソッド • DynamicFrameには変換のた めのメソッドが用意されてい る(今後も追加予定) • 管理コンソールではクリック でビルトイン変換のサンプル コードが追加される • DataFrameに変換して SparkSQLで変換する方法も可 能 ビルトイン変換の一覧: http://docs.aws.amazon.com/ja_jp/glue/latest/dg/built-in-transforms.html
  • 35. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 35 変換の例:ジョイン ジョインはDynamicFrameの joinメソッドで提供される datasource0 = glueContext.create_dynamic_frame.from_catalog(...) datasource1 = glueContext.create_dynamic_frame.from_catalog(...) : #datasouce0とdatasouce1をORDER_ID列でジョインする datasource2=datasource0.join( ["ORDER_ID"],["ORDER_ID"], datasource1)
  • 36. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 36 変換の例:フィルタリング SplitRowsクラスで条件によるDynamicFrameの分割で実現 もしくはDataFrameに変換してフィルタリング frame_collection = SplitRows.apply(my_dynamic_frame,{"age": {">": 21}}, "adults", "youths") print frame_collection["youths"] ret_df = my_dynamic_frame.toDF().filter("age > 21") new_dyn_f = DynamicFrame.fromDF(ret_df, glueContext,"new_dyn_f") my_dynamic_frame.toDF().createOrReplaceTempView("temptable") sql_df = spark.sql("SELECT * FROM temptable WHERE age > 21") new_dyn_f = DynamicFrame.fromDF(sql_df, glueContext,"new_dyn_f")
  • 37. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 37 ③ターゲット(Sink)への書き出し ターゲットの列にDynamicFrameをあわせる処理 • ApplyMapping.apply – 列マッピングの定義 • SelectFields.Apply – 出力する列を設定 ※これらは管理コンソールのウィザードで自動生成されるので、通常ユーザは作成しない 最後にwrite_dynamic_frame.from_catalogで出力 applymapping1 = ApplyMapping.apply(frame = datasource2, mappings = [("COUNTRY", "string", "country", "string"),*中略* , ("NAME", "string", "name", "string")], transformation_ctx = "applymapping1") selectfields2 = SelectFields.apply(frame = applymapping1, paths = ["mktsegment", "country", *中略* "cust_id"], transformation_ctx = "selectfields2") datasink3 = glueContext.write_dynamic_frame.from_catalog (frame = selectfields2, database = "demo-redshift", table_name = "salesdwh_public_customer_dim", redshift_tmp_dir = args["TempDir"], transformation_ctx = "datasink3")
  • 38. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 38 補足:S3への書き出し時のフォーマット write_dybamic_frame.from_optionsを使用することで、 任意のS3に対しフォーマットを指定して出力することが可 能です ds2 = glueContext.write_dynamic_frame.from_options( frame = ds1, connection_type = "s3", connection_options = {"path": "s3://demo1/output"}, format = "parquet", transformation_ctx = "ds2")
  • 39. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 39 ジョブへの引数の受け渡し • ジョブ起動時にパラメータを指定することが可能 • Keyは'--'から始まるようにする(例:--Arg1) • sys.argvに入るので、それをgetResolveOptionsで読み取りやすい形にして 利用する(引数名の大文字小文字を区別するので注意) from awsglue.utils import getResolvedOptions args = getResolvedOptions(sys.argv, ['INPUT', 'OUTPUT']) print "The value of Arg1: " , args['INPUT'] print "The value of Arg2: " , args['OUTPUT']
  • 40. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 40 オーケストレーション&リソース管理 フルマネージド、サーバレスのジョブ実行
  • 41. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 41 ジョブの定義と実行 作成したJOBスクリプトを読み込んで実行 • IAMロールで権限を設定 ジョブの実行開始方法 • APIコール(手動) • トリガー リトライ制限の指定や、パラメータを渡すことが可能 実行ログはCloudWatch Logsに出力 CloudWatch Eventでジョブ実行・失敗のイベントを フック可能(成功時に別のサービスを呼び出す等) http://docs.aws.amazon.com/ja_jp/AmazonCloudW atch/latest/events/EventTypes.html#glue-event- types
  • 42. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 42 ライブラリの利用 ジョブ実行時にライブラリを指定可能 • Python (2.7) ライブラリ • S3にライブラリファイルを置いてジョ ブ作成時に指定する • S3のURLは複数をカンマで設定可能 • Pure Pythonコードであること (pandas等C言語拡張に依存するライ ブラリは利用できません) • Java ライブラリ • 同上。S3にJarを置いて指定する • Pure JavaもしくはScala 2.11ベースの コードのみ 参照) http://docs.aws.amazon.com/glue/latest/dg/console-custom-created.html
  • 43. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 43 トリガー トリガー:ジョブを起動する きっかけ ジョブ開始のタイミング • 先行ジョブ完了時 • スケジュール • API(オンデマンド)
  • 44. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 44 サーバレスのジョブ実行環境 サーバ管理や準備が不要  ジョブに必要なインスタン スが自動的に用意される  ENIがVPC内に作成され、 ENI経由でVPC内リソース にアクセス可能 お客様VPC お客様VPC インスタンスプール
  • 45. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 45 ジョブ実行時のVPC内へのアクセス • ENI経由でアクセスされるため、 ジョブインスタンスはVPC内に存 在するように見える(※VPC内のリ ソースにアクセスするジョブの場合) • ENIにはサブネット内のプライベー トIPが付与されるため、インター ネットへのアクセスが無いプライ ベートサブネットでも利用可能 • ジョブの中でプライベートサブ ネットからS3にアクセスする必要 がある場合はVPC Endpointの設定 が必須
  • 46. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 46 補足:Glueとセキュリティグループ • ジョブが参照するリソース(RDB)はGlueジョブのクラスタから参照可能なようにセ キュリティグループを設定する必要がある • そのため、自己参照型(自セキュリティグループからのアクセスを全て許可するルー ル)のセキュリティグループを作成し、それをリソースとGlueジョブに設定する 参照) http://docs.aws.amazon.com/glue/latest/dg/setup-vpc-for-glue-access.html
  • 47. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 47 ETLジョブの実行状況確認 • ETLジョブの状況は管理コンソールに表示される • ログはCloudWatch Logsに出力される
  • 48. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 48 開発環境
  • 49. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 49 Development Endpoint Development Endpoint • ジョブ実行環境に直接接続するためのElasitic IP アドレス。REPLにアクセス可能 • 作成時にSSH鍵を登録するが、通常のEC2用とは 別に用意することを推奨 開発用にNotebook(Zeppelin)サーバも提供 • http://zeppelin.apache.org/ • Endpointを選択→Actionから作成可能 • CloudFormationで自動生成 補足) • Dev. Endpointを削除してもNotebookサーバは消えない • Zeppelin自体のトラブルは~/zeppelin/logsにログが出力されるのでSSHでログインして確認 • スクリプト内でprintした値はCloudWatch Logs(Error logs)経由で出力される
  • 50. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 50 Dev. EndpointとNotebook (Zeppelin)サーバ 補足:NotebookからDev.EndpointへはローカルポートをSSHでポートフォワードしているため、 Notebook作成時にDev.Endpointのプライベートキーが必用になる Office Internet virtual private cloud Notebook (Zeppelin) Server HTTPS for Zeppelin Dev. Endpoint AWS Glue インスタンスプール SSH port forward SSH for REPL
  • 51. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 51
  • 52. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 52 落穂ひろい
  • 53. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 53 GlueとIAM Role① ETLジョブ用 • IAM Roleを作成しジョブ実行時に指定する • AWSGlueServiceRoleが定義済なので、開発用等であればこのポリシーをアタッ チするのが簡単 • IAMの名前はAWSGlueServiceRoleから始まる名前にする(もしくは iam:PassRoleを含める) • 詳細:http://docs.aws.amazon.com/ja_jp/glue/latest/dg/create-an-iam-role.html Development endpointアクセス用: • Notebookから各種リソースにアクセスをするために必用 • AWSGlueServiceNotebookRoleポリシーが定義済なので、これに加えて AmazonS3FullAccess 等必用な権限を追加する • AWSGlueServiceNotebookRoleから始まる名前にする(もしくは iam:PassRoleを含める) • 詳細: http://docs.aws.amazon.com/ja_jp/glue/latest/dg/create-an-iam-role- notebook.html
  • 54. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 54 GlueとIAM Role② 開発ユーザのIAM(管理コンソールログイン用) • AWS管理のAWSGlueConsoleFullAccessと、加えて CloudWatchLogsReadOnlyAccess 、 AWSCloudFormationReadOnlyAccess、 AmazonAthenaFullAccessが必用 • 詳細: http://docs.aws.amazon.com/ja_jp/glue/latest/dg/attach- policy-iam-user.html
  • 55. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 55 AWS Glue 料金(*) ETLジョブ実行: • $0.44/DPU/時(課金は秒単位) • 10分間未満の処理は10分として計算 されます • 1 DPU = 4vCPU, 16GBメモリ クローラー: • $0.44/DPU/時(課金は秒単位) • クローラーの処理能力は2DPUで計算 • 10分間未満の処理は10分として計算さ れます データカタログへのストア: • 100万オブジェクトまで無料 • それ以上は10万オブジェクトあたり $1/月 データカタログへのリクエスト: • 100万リクエスト/月まで無料 • それ以上は100万リクエストあたりい $1/月 その他: • S3へのアクセスに掛かる費用等は別途 必要です * 2017/10/18時点のU.S. East (N. Virginia), U.S. East (Ohio), U.S. West (Oregon)での価格です。最新の情報は以下URLを御確認ください。 https://aws.amazon.com/glue/pricing/
  • 56. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 56 AWS Glue - Development Endpoint利用の費用 Development Endpoint経由の実行: • DPU単位の費用がEndpoint作成した直後から発生(削除す るまで) • 不要な期間は削除することで費用を抑えることが可能 • DPUの数はEndpoint作成時に指定可能 • デフォルトは5。最低でも2必要 Zeppelin server : • 通常のAmazon EC2利用費用 • m4.xlarge
  • 57. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 57 まとめ AWS Glueは、サーバレスで分散処理を実現するETLサービス データカタログとクローラーがメタデータ管理を実現 ETL処理はPySparkで実現 • コーディングによる生産性 • 既存のPySparkライブラリの活用
  • 58. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 58 補足資料
  • 59. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 59 Amazon EMRとAWS Glueの違い Amazon EMR AWS Glue 用途 汎用Hadoop/Spark環境 ETL処理に特化 (Sparkベース) スケールアウト 可能(ユーザ設計) 可能(パラメータ指定) サーバ管理 数クリックで指定した環境 が準備される サーバ管理が不要 (サーバレス) データレイク(S3)へ の透過的なアクセス 可能 可能 プログラミング環境 Hadoopエコシステム上の 多様なアプリケーション PySparkでETL処理を作成
  • 60. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 60 FAQ [Q] クローラーからデータソースにつながりません [A] ドキュメントに沿って以下の設定を見直してください • データソースに自己参照型のSGが設定されているか • クローラーが必用な権限(Role)を持っているか [Q] Glueを動かしているSparkのバージョンは? [A] 現時点ではSpark 2.1です [Q] クローラーが型を認識する際には全データをスキャンしているのですか? [A] クローラーがデータ型を認識するために取得するデータは先頭2MB分のみ
  • 61. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 61 FAQ [Q] 既存HiveのMetastoreからGlueのData Catalogへ移行するには? [A] 移行ツールを用意しています • https://github.com/awslabs/aws-glue- samples/tree/master/utilities/Hive_metastore_migration [Q] ETL処理に関係ないプログラムを動かせますか? [A] Jobの中ではPySparkで自由にプログラムを記述することが可能で す。現時点では言語はPySparkのみのサポートであるため、E汎用的な 処理にはAmazon EMRも検討してください
  • 62. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 62 FAQ [Q] Jobプログラムの中から、Glueデータカタログが持つ接続情報を得るには? [A] 以下のサンプルを参考にしてください glue=boto3.client(service_name='glue', region_name='us-east-1', endpoint_url='https://glue.us-east-1.amazonaws.com') redshiftConnection=glue.get_connection(Name=target_database) jdbc_url=redshiftConnection['Connection']['ConnectionProperties']['JDBC_CONNECTION_URL'] username= redshiftConnection['Connection']['ConnectionProperties']['USERNAME'] password= redshiftConnection['Connection']['ConnectionProperties']['PASSWORD']
  • 63. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 63 FAQ [Q] トリガーを設定したのにジョブが実行されません [A] 以下のポイントを見直してください • トリガーのステータスが ACTIVATED になっているかどうか • トリガーを作ると CREATED となるので、"Trigger-->Actions-->Enable Trigger" から ACTIVATED としてください。 • (トリガーのタイプが "Job completed" である場合) 最初のジョブがトリ ガー経由で実行されているかどうか。 • 最初のジョブが手動で実行された場合、"Job completed" のトリガーに関連付 けられた後続のジョブは実行されません。これは各ジョブを個別にテスト可能 とするための仕様です。
  • 64. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 64 参考資料 AWS Glue ホームページ • https://aws.amazon.com/jp/glue/ AWS Glue 開発者ガイド(公式ドキュメント) • https://aws.amazon.com/jp/documentation/glue/ AWS Glue ETL Code Samples (サンプルコード) • https://github.com/awslabs/aws-glue-samples AWS Glue用のPythonパッケージ(awsglue.*のソースコード) • https://github.com/awslabs/aws-glue-libs/tree/master/awsglue AWS Glue Data CatalogとHive Metastoreとの変換 • https://github.com/awslabs/aws-glue- samples/tree/master/utilities/Hive_metastore_migration
  • 65. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 65 参考資料 Redshift Data Source for Apache Spark • RedshiftのデータをDataFrameで操作するためのライブラリ • https://github.com/databricks/spark-redshift
  • 66. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 66 Q&A
  • 67. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 67 オンラインセミナー資料の配置場所 AWS クラウドサービス活用資料集 • http://aws.amazon.com/jp/aws-jp-introduction/ AWS Solutions Architect ブログ • 最新の情報、セミナー中のQ&A等が掲載されています • http://aws.typepad.com/sajp/
  • 68. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 68 公式Twitter/Facebook AWSの最新情報をお届けします @awscloud_jp 検索 最新技術情報、イベント情報、お役立ち情報、 お得なキャンペーン情報などを日々更新しています! もしくは http://on.fb.me/1vR8yWm
  • 69. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 69 AWSの導入、お問い合わせのご相談 AWSクラウド導入に関するご質問、お見積り、資料請求を ご希望のお客様は以下のリンクよりお気軽にご相談ください https://aws.amazon.com/jp/contact-us/aws-sales/ ※「AWS 問い合わせ」で検索してください
  • 70. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 70 AWS Black Belt Online Seminar 10月の配信予定 • 10月3日(火) 12:00~13:00 AWSへのネットワーク 接続とAWS上のネットワーク内部設計 • 10月4日(水) 18:00~19:00 Amazon GameLift • 10月10日(火) 12:00~13:00 AWSにおけるアプリ認 証パターンのご紹介 • 10月11日(水) 18:00~19:00 Amazon Kinesis • 10月18日(水) 18:00~19:00 AWS Glue • 10月24日(火) 12:00~13:00 エグゼクティブ向け AWS紹介 • 10月25日(水) 18:00~19:00 AWS Key Management Service 申し込みサイト • https://aws.amazon.com/jp/about-aws/events/webinars/ • (もしくは「AWS セミナー」で検索)
  • 71. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 71 AWS Black Belt Online Seminar 11月の配信予定 (+ 一部先行予告) • 11月1日(水) 18:00~19:00 Amazon EMR • 11月9日(木) 12:00~13:00 Amazon Pinpoint で始めるモバイルアプリのグロースハック • 11月15日(水) 18:00~19:00 ELB Update - Network Load Balancer(NLB)と関連サービス • 11月21日(火) 12:00~13:00 AWS上の位置情報 • 11月22日(水) 18:00~19:00 AWS WAF • 12月1日(金) 12:00~13:00 AWS re:Invent 2017 Report 申し込みサイト • https://aws.amazon.com/jp/about-aws/events/webinars/ • (もしくは「AWS セミナー」で検索) ※下線はイレギュラー日程です。ご注意ください
  • 72. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 72 簡単なアンケートにご協力ください 画面に表示されるアンケートフォームに入力をお願いします。 皆様のご意見は、今後の改善活動に活用させて頂きます。 コメント欄には1行で自由な内容を書き込み下さい。 例) - 本オンラインセミナーへのご意見 - 今後オンラインセミナーで取り上げて欲しい題材 - 発表者への激励 等々… ※Q&A同様に書き込んだ内容は主催者にしか見えません
  • 73. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 73 ご参加ありがとうございました
  • 74. © 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 74