ablog

不器用で落着きのない技術者のメモ

AWS Glue とは

カタログ

データベース
テーブル
分類子(Classifier)

ETL

ジョブ
トリガー
開発エンドポイント

セキュリティ

Apache Spark の主要な抽象化の 1 つは SparkSQL DataFrame で、これは R と Pandas にある DataFrame 構造に似ています。DataFrame はテーブルと似ており、機能スタイル (マップ/リデュース/フィルタ/その他) 操作と SQL 操作 (選択、プロジェクト、集計) をサポートしています。

DataFrames は、強力で広く使用されていますが、抽出、変換、およびロード (ETL) 操作に関しては制限があります。最も重要なのは、データをロードする前にスキーマを指定する必要があることです。SparkSQL は、データに対してパスを 2 つ作ることでこれを解決します。1 つ目はスキーマを推測し、2 つ目はデータをロードします。ただし、この推測は限定されており、実際の煩雑なデータには対応しません。たとえば、同じフィールドが異なるレコードの異なるタイプである可能性があります。Apache Spark は、多くの場合、作業を中断して、元のフィールドテキストを使用してタイプを string として報告します。これは正しくない可能性があり、スキーマの不一致を解決する方法を細かく制御する必要があります。また、大規模なデータセットの場合、ソースデータに対する追加パスが非常に高価になる可能性があります。

これらの制限に対応するために、AWS Glue により DynamicFrame が導入されました。DynamicFrame は、DataFrame と似ていますが、各レコードが自己記述できるため、最初はスキーマは必要ありません。代わりに、AWS Glue は必要に応じてオンザフライでスキーマを計算し、選択 (または共用) タイプを使用してスキーマの不一致を明示的にエンコードします。これらの不整合を解決して、固定スキーマを必要とするデータストアとデータセットを互換性のあるものにできます。

同様に、DynamicRecord は DynamicFrame 内の論理レコードを表します。これは、Spark DataFrame の行と似ていますが、自己記述型であり、固定スキーマに適合しないデータに使用できます。

DynamicFrame クラス - AWS Glue
  • クローラは先頭2MBだけスキャンしている

上記のドキュメントでは、Crawlerがテーブルを作成する際はデータの先頭2MBを見て判断すると記載されています。

AWS GlueのDynamicFrameの動きを見てみる | DevelopersIO

  • DPU

ETL ジョブの実行に使用された DPU (Data Processing Unit) の数に基づいて時間あたりの課金が発生します。1 つの DPU (Data Processing Unit) では 4 つの vCPU と 16 GB のメモリが提供されます。Glue の ETL ジョブには最低で 2 個の DPU が必要です。AWS Glue のデフォルトでは、各 ETL ジョブに 10 個の DPU が割り当てられます。DPU 時間あたり 0.44 ドルが 1 秒単位で課金され、最も近い秒単位に切り上げられます。ETL ジョブごとに 10 分の最小期間が設定されます。

AWS Glue の料金 – アマゾン ウェブ サービス (AWS)
  • クローラー
    • DPU(データ処理ユニット)の時間単位で課金
    • 1DPU = 4vCPUと16GBメモリ
    • クローラーには2DPUが割り当て
    • 1DPU 0.44ドル/時
    • 最低10分とし、分単位で切り上げ請求
  • ETLジョブ
    • DPU(データ処理ユニット)の時間単位で課金
      • 1DPU = 4vCPUと16GBメモリ
      • Glue ETL処理には最低2DPUが必要
      • 本番環境のデフォルトはジョブごとに10DPUを割り当て
      • 開発エンドポイントのデフォルトは開発エンドポイントごとに5DPUを割り当て
    • 1DPU 0.44ドル/時
    • 最低10分とし、分単位で切り上げ請求
【新サービス】AWS上でフルマネージドなデータカタログとETLを実現するサービス『AWS Glue』がリリースされました!使い始めの準備をご紹介 | DevelopersIO
  • Zeppelinとは

ブラウザ上でプログラムをインタラクティブに記述できるノートブックというものを作成するツールの一種です。 有名なところではJupyter notebook(IPython notebook)があるかと思いますが、それと似たツールだと想像していただければと思います。

Apache Zeppelin入門 | Hadoop Advent Calendar 2016 #19 | DevelopersIO

ファイルの最初の方にデータの定義があり、その後にデータが連続して登録されています。jsonxmlのように定義名が何度も繰り返すような冗長さもなく、ファイルの最初を読み込んだ段階でデータ構造が理解できる「マシン・リーダブル」なフォーマット

(中略)

{
"name": "users",
"type": "record",
"fields": [
{"name": "id", "type": "int"},
{"name": "guid", "type": "string"},
{"name": "name", "type": "string"},
{"name": "address", "type": "string"}
]}
Amazon EMR の Avro フォーマットのデータを Amazon Redshift にロードする | DevelopersIO

AWS Glue では、開発エンドポイントを作成してから、REPL (Read-Evaluate-Print Loop) シェルを呼び出して PySpark コードを増分的に実行し、ETL スクリプトをデプロイする前にインタラクティブデバッグできるようにします。

チュートリアル: 開発エンドポイントで REPL シェルを使用する - AWS Glue