

# AWS Glue: 仕組み
<a name="how-it-works"></a>

AWS Glue は他の AWS のサービスを使用して ETL (抽出、変換、ロード) ジョブを調整し、データウェアハウスとデータレイクを構築して、出力ストリームを生成します。AWS Glue は API オペレーションを呼び出して、データの変換、ランタイムログの作成、ジョブロジックの保存を行い、ジョブ実行のモニタリングに役立つ通知を作成します。AWS Glue コンソールはこれらのサービスを管理アプリケーションに接続して、お客様が ETL ワークの作成とモニタリングに集中できるようにします。管理およびジョブ開発のオペレーションは、コンソールがお客様に代わって実行します。データソースへのアクセスとデータターゲットへの書き込みを行うために必要な、認証情報と他のプロパティは、お客様が AWS Glue に提供する必要があります。

AWS Glue は、ワークロードを実行するために必要なリソースのプロビジョニングおよび管理を行います。AWS Glue が代わって行うため、ETL ツールのインフラストラクチャを作成する必要はありません。リソースが必要な場合、起動時間を削減するために、AWS Glue はインスタンスのウォームプールからインスタンスを使用してワークロードを実行します。

AWS Glue では、データカタログにあるテーブル定義を使用してジョブを作成します。ジョブは、目的のデータ変換タスクを実行する手順を含むスクリプトで構成されます。トリガーを使用し、スケジュールに基づいて、または指定されたイベントの結果としてジョブを開始します。ターゲットデータが存在する場所、およびターゲットに入力するソースデータを指定します。入力に基づいて、AWS Glue はデータをソースからターゲット形式に変換します。または、AWS Glue コンソールまたは API でカスタムスクリプトを指定して、特定の要件に従ってデータを処理することもできます。

**データソースと送信先**  
AWS Glue for Spark は、次のような複数のシステムやデータベースとの間でデータを読み書きできます。
+ Amazon S3
+ Amazon DynamoDB
+ Amazon Redshift
+ Amazon Relational Database Service (Amazon RDS)
+ JDBC アクセスが可能なサードパーティのデータベース
+ MongoDB と Amazon DocumentDB (MongoDB 互換)
+ その他のマーケットプレイスコネクタと Apache Spark プラグイン

**データストリーム**  
AWS Glue for Spark は、次のシステムからデータをストリーミングできます。
+ Amazon Kinesis Data Streams
+ Apache Kafka

AWS Glue は複数の AWS リージョンで利用可能です。詳細については、[AWS](https://docs.aws.amazon.com/general/latest/gr/rande.html) の「Amazon Web Services 全般のリファレンス のリージョンとエンドポイント」を参照してください。

**Topics**
+ [独立で実行されるサーバーレス ETL ジョブ](#how-it-works-isolation)
+ [AWS Glue の概念](components-key-concepts.md)
+ [AWS Glue コンポーネント](components-overview.md)
+ [AWS Glue for Spark と AWS Glue for Ray](how-it-works-engines.md)
+ [AWS Glue を使用して半構造化されたスキーマをリレーショナルスキーマに変換する](schema-relationalize.md)
+ [AWS Glue 型システム](glue-types.md)

## 独立で実行されるサーバーレス ETL ジョブ
<a name="how-it-works-isolation"></a>

AWS Glue は、Spark または Ray から選択したエンジンを使用して、サーバーレス環境で ETL ジョブを実行します。AWS Glue は、独自のサービスアカウントでプロビジョニングして管理する仮想リソースでこれらのジョブを実行します。

AWS Glue は、以下を実行するよう設計されています。
+ お客様のデータを分離します。
+ 伝送中と保管時のお客様のデータを保護します。
+ 一時的な制限された認証情報を使用して、またはアカウント内の IAM ロールに対するお客様の同意を得て、お客様のリクエストに応え必要な時だけお客様のデータにアクセスします。

ETL ジョブのプロビジョニング時に、Virtual Private Cloud (VPC) にある入力データソースおよび出力データターゲットを提供します。また、データソースおよびターゲットにアクセスするために必要な、IAM ロール、VPC ID、サブネット ID、およびセキュリティグループを提供します。各タプル (顧客アカウント ID、IAM ロール、サブネット ID、およびセキュリティグループ) に、AWS Glue は、AWS Glue サービスアカウント内に存在する他のすべての環境からネットワークおよび管理レベルで分離された新しい環境を作成します。

 AWS アカウント内で、データカタログ、ジョブ、クローラーなどの AWS Glue リソースを作成して設定します。これらのリソースは、作成プロセス中に指定した IAM ロールとネットワーク設定 (サブネットとセキュリティグループ) に関連付けられます。

AWS Glue はプライベート IP アドレスを使用して、サブネットで Elastic Network Interface を作成します。ジョブはこれらの Elastic Network Interface を使用して、データソースおよびデータターゲットにアクセスします。ジョブ実行環境内外へのトラフィックと、ジョブ実行環境内でのトラフィックは、VPC およびネットワークポリシーにより管理されます。ただし、1 つ例外があり、AWS Glue ライブラリに対する呼び出しは、AWS Glue VPC 経由で AWS Glue API オペレーションにトラフィックをプロキシできます。すべての AWS Glue API 呼び出しはログに記録されます。そのため、データの所有者は、監査ログをアカウントに配信する [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/) を有効にすることで API アクセスを監査できます。

ETL ジョブを実行する AWS Glue 管理の環境は、他の AWS のサービスと同じセキュリティ実施方法で保護されています。プラクティスと共有されたセキュリティ責任の概要については、「[Introduction to AWS Security Processes](https://docs.aws.amazon.com/whitepapers/latest/introduction-aws-security/welcome.html)」のホワイトペーパーを参照してください。

# AWS Glue の概念
<a name="components-key-concepts"></a>

 AWS Glue はフルマネージド型の ETL (抽出、変換、ロード) サービスであり、さまざまなデータソースとターゲット間でデータを簡単に移動できます。主なコンポーネントは次のとおりです。
+  **データカタログ**: ETL ワークフローのテーブル定義、ジョブ定義、その他の制御情報を含むメタデータストア。
+  **クローラー**: データソースへの接続、データスキーマの推測、データカタログでメタデータテーブル定義の作成を行うプログラム。
+  **ETL ジョブ**: ソースからデータの抽出、Apache Spark スクリプトを使用して変換、ターゲットにロードするビジネスロジック。
+  **トリガー**: スケジュールまたはイベントに基づいてジョブ実行を開始するメカニズム。

 一般的なワークフローに含まれる内容は次のとおりです。

1.  データカタログでデータソースおよびターゲットを定義します。

1.  クローラーを使用して、データソースのテーブルメタデータでデータカタログに入力します。

1.  変換スクリプトを使用して ETL ジョブを定義し、データを移動および処理します。

1.  ジョブをオンデマンドまたはトリガーに基づいて実行します。

1.  ダッシュボードを使用してジョブのパフォーマンスをモニタリングします。

 次の図は、AWS Glue 環境のアーキテクチャを示します。

![\[AWS Glue での Data Catalog への入力と ETL データフロー処理の基本的な概念。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/HowItWorks-overview.png)


* で*ジョブAWS Glueを指定し、データソースからデータターゲットへのデータの抽出、変換、ロード (ETL) に必要な作業を完了します。通常は、以下のアクションを実行します。
+ データストアソースの場合は、*クローラ*を指定し、AWS Glue Data Catalog にメタデータテーブルの定義を入力します。データストアでクローラを指定し、クローラは Data Catalog のテーブル定義を作成します。ストリーミングソースの場合は、Data Catalog テーブルを手動で定義し、データストリームのプロパティを指定します。

  テーブル定義に加えて、AWS Glue Data Catalog には ETL ジョブを定義するために必要な他のメタデータが含まれています。このメタデータを使用して、データを変換するジョブを定義できます。
+ AWS Glue はデータを変換するスクリプトを生成できます。または、AWS Glue コンソールまたは API でスクリプトを提供できます。
+ ジョブをオンデマンドで実行する、または、指定した*トリガー*が発生すると開始するようにセットアップできます。トリガーは、時間ベースのスケジュールまたはイベントです。

  ジョブが実行されると、スクリプトはデータソースからデータを抽出し、データを変換してデータターゲットにロードします。スクリプトは AWS Glue の Apache Spark 環境で実行されます。

**重要**  
AWS Glue のテーブルとデータベースは、AWS Glue Data Catalog のオブジェクトです。それらにはメタデータが含まれ、データストアからのデータは含まれません。


|  | 
| --- |
|  **AWS Glue で正常に処理するために、CSV などのテキストベースのデータは `UTF-8` でエンコードする必要があります。詳細については、Wikipedia の「[UTF-8](https://en.wikipedia.org/wiki/UTF-8)」を参照してください。**  | 

## AWS Glue の用語
<a name="components-major"></a>

AWS Glue は、複数のコンポーネントの相互作用に依存して、抽出、変換、ロード (ETL) ワークフローを作成および管理します。

### AWS Glue Data Catalog
<a name="components-data-catalog"></a>

AWS Glue の持続的なメタデータストア。これには、AWS Glue 環境を管理するためのテーブル定義、ジョブ定義、およびその他のコントロール情報が含まれています。各 AWS アカウントには、リージョンごとに 1 つの AWS Glue Data Catalog があります。

### 分類子
<a name="components-classifier"></a>

データのスキーマを決定します。AWS Glue は、一般的なファイルタイプの分類子を提供します (CSV、JSON、AVRO、XML など)。また、JDBC 接続を使用する一般的なリレーショナルデータベース管理システムの分類子を提供します。独自の分類子を記述するには、 grok パターンを使用する、または、XML ドキュメント内の行タグを指定します。

### 接続
<a name="components-connection"></a>

特定のデータストアに接続するために必要なプロパティを含む Data Catalog オブジェクトです。

### Crawler
<a name="components-crawler"></a>

データストア (ソースまたはターゲット) に接続し、分類子の優先順位リストを進行してデータのスキーマを判断し、AWS Glue Data Catalog にメタデータテーブルを作成するプログラムです。

### データベース
<a name="components-database"></a>

論理グループに分類される、一連の関連付けられた Data Catalog テーブル定義です。

### データストア、データソース、データターゲット
<a name="components-data-store"></a>

*データストア* は、データを永続的に保存するリポジトリです。例として、Amazon S3 バケット、リレーショナルデータベースなどがあります。*データソース*は、プロセスまたは変換への入力として使用されるデータストアです。*データターゲット*はプロセスまたは変換の書込み先であるデータストアです。

### 開発エンドポイント
<a name="components-development-endpoint"></a>

エンドポイントは、AWS Glue ETL スクリプトの開発およびテストに使用できる環境です。

### 動的フレーム
<a name="components-dynamic-frame"></a>

構造や配列などのネストされたデータをサポートする分散テーブルです。各レコードは自己記述型であり、半構造化データのスキーマの柔軟性を持つよう設計されています。各レコードには、データとそのデータを記述するスキーマの両方が含まれます。動的フレームと Apache Spark DataFrames の両方を ETL スクリプトで使用し、それらの間で変換できます。動的フレームは、データクリーニングと ETL 用の一連の高度な変換を提供します。

### ジョブ
<a name="components-job"></a>

ETL 作業を実行するために必要なビジネスロジックです。変換スクリプト、データソース、およびデータターゲットで構成されます。ジョブ実行は、スケジュールされたトリガーにより、または、イベントにトリガーされることで開始されます。

### ジョブパフォーマンスダッシュボード
<a name="features-job-monitoring"></a>

AWS Glue は、ETL ジョブ用の包括的な実行ダッシュボードを提供します。ダッシュボードには、特定の時間枠からのジョブ実行に関する情報が表示されます。

### ノートブックインターフェイス。
<a name="components-notebook-server"></a>

ジョブ作成とデータ探索を容易にするワンクリック設定により、ノートブック体験を強化します。ノートブックと接続は自動的に構成されます。Jupyter Notebook をベースとしたノートブックインターフェースにより、AWS Glue のサーバーレス Apache Spark ETL インフラストラクチャを使用するスクリプトやワークフローを、対話的に開発、デバッグし、デプロイすることができます。また、ノートブック環境では、アドホッククエリ、データ分析、ビジュアライゼーション (表やグラフなど) を実行できます。

### スクリプト
<a name="components-script"></a>

ソースからデータを抽出し、変換し、ターゲットにロードするコード。AWS Glue は PySpark または Scala スクリプトを生成します。

### [テーブル]
<a name="components-table"></a>

データを表すメタデータ定義。データが、Amazon Simple Storage Service (Amazon S3) ファイル、Amazon Relational Database Service (Amazon RDS) テーブル、または別の一連のデータのどれにある場合でも、テーブルはデータのスキーマを定義します。AWS Glue Data Catalog のテーブルは、列名、データ型の定義、パーティション情報、および基本データセットに関するその他のメタデータで構成されています。データのスキーマは AWS Glue のテーブル定義で表されます。実際のデータは、ファイルまたはリレーショナルデータベーステーブルにあっても、元のデータストアに残ります。AWS Glue はファイルとリレーショナルデータベースのテーブルを AWS Glue Data Catalog に格納します。それらは、ETL ジョブを作成する際にソースおよびターゲットとして使用されます。

### 変換
<a name="components-transform"></a>

データを操作して別の形式にするために使用するコードのロジック。

### Trigger トリガー)
<a name="components-trigger"></a>

ETL ジョブを開始します。トリガーはスケジュールされた時間またはイベントに基いて定義できます。

### ビジュアルジョブエディタ
<a name="features-visual-editor"></a>

 ビジュアルジョブエディターは、AWS Glue での抽出、変換、ロード (ETL) ジョブの作成、実行、およびモニタリングが簡単に行えるグラフィカルなインターフェイスです。データ変換ワークフローを視覚的に構成し、AWS Glue の Apache Spark ベースのサーバーレス ETL エンジンでそれらをシームレスに実行して、ジョブの各ステップでスキーマとデータの結果を検査できます。

### ワーカー
<a name="components-worker"></a>

AWS Glue では、ETL ジョブの実行にかかる時間に対してのみお支払いが発生します。管理するリソースはなく、前払い料金もありません。また、起動時間やシャットダウン時間に対しての課金もありません。ETL ジョブの実行に使用された**データ処理ユニット** (DPUs) の数に基づいて時間あたりの料金が請求されます。単一のデータ処理ユニット (DPU) は、*ワーカー*とも呼ばれます。AWS Glue には、ジョブのレイテンシー要件とコスト要件を満たす設定を選択するために役立つ複数のワーカータイプがあります。ワーカーは、Standard、G.1X、G.2X、G.4X、G.8X、G.12X、G.16X、G.025X、およびメモリ最適化された R.1X、R.2X、R.4X、R.8X 構成で提供されます。

# AWS Glue コンポーネント
<a name="components-overview"></a>

AWS Glue は、抽出、変換、ロード (ETL) ワークロードを設定し管理するためのコンソールと API オペレーションを備えています。いくつかの言語に固有な SDK と AWS Command Line Interface (AWS CLI) を介して API オペレーションを使用できます。AWS CLI の使用については、「[AWS CLI コマンドリファレンス](https://docs.aws.amazon.com/cli/latest/reference/)」を参照してください。

AWS Glue は AWS Glue Data Catalog を使用して、データソース、変換、およびターゲットについてのメタデータを保存します。Data Catalog は Apache Hive メタストアのドロップインリプレースメントです。AWS Glue Jobs system は、データの ETL オペレーションの定義、スケジューリング、および実行のためのマネージド型インフラストラクチャを備えています。AWS Glue API の詳細については、「[AWS Glue API](aws-glue-api.md)」を参照してください。

## AWS Glue コンソール
<a name="console-intro"></a>

AWS Glue コンソールを使用して、ETL ワークフローを定義しオーケストレーションします。コンソールは AWS Glue Data Catalog および AWS Glue Jobs system のいくつかの API オペレーションを呼び出して、次のタスクを実行します。
+ ジョブ、テーブル、クローラ、接続などの AWS Glue オブジェクトを定義します。
+ いつクローラが実行するかをスケジュールします。
+ ジョブトリガーのイベントやスケジュールを定義します。
+ AWS Glue オブジェクトのリストを検索しフィルタリングします。
+ 変換スクリプトを編集します。

## AWS Glue Data Catalog
<a name="data-catalog-intro"></a>

 AWS Glue Data Catalog は AWS クラウド内にある永続的な技術メタデータストアです。

各 AWS アカウントには、AWS リージョンごとに 1 つの AWS Glue Data Catalog があります。各データカタログは、データベースに構成された高度にスケーラブルなテーブルのコレクションです。テーブルは、Amazon RDS、Apache Hadoop 分散ファイルシステム、Amazon OpenSearch Service などのソースに保存されている構造化データまたは半構造化データの集合をメタデータで表現したものです。AWS Glue Data Catalog は統一されたリポジトリを提供するため、異種システムはデータサイロのデータを追跡するためにメタデータを保存し検索することができます。その後は、メタデータを使用して、多種多様なアプリケーション全体で一貫したやり方でそのデータをクエリしたり変換したりすることができます。

 データカタログを AWS Identity and Access Management ポリシーと Lake Formation と併用することで、テーブルやデータベースへのアクセスを制御します。この方法により、企業内の様々なグループが、機密情報を高度かつ詳細に保護しながら、より広範な組織に対してデータを安全に公開できるようになります。

また、データカタログを CloudTrail や Lake Formation を併用することで、スキーマ変更の追跡やデータアクセス制御を備えた包括的な監査およびガバナンス機能も提供します。これにより、データの不適切な変更や誤った共有を防止できます。

 AWS Glue Data Catalog のセキュリティ保護と監査の詳細については、以下を参照してください。
+  **AWS Lake Formation** – 詳細については、*AWS Lake Formation デベロッパーガイド*の「[AWS Lake Formation とは？](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html)」を参照してください。
+  **CloudTrail** – 詳細については、「AWS CloudTrail ユーザーガイド」の「[CloudTrail とは](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)」を参照してください。

次に示すのは、AWS Glue Data Catalog を使用する AWS の他のサービスとオープンソースプロジェクトです。
+ **Amazon Athena** – 詳細については、*Amazon Athena ユーザーガイド*の「[テーブル、データベース、およびデータカタログの理解](https://docs.aws.amazon.com/athena/latest/ug/understanding-tables-databases-and-the-data-catalog.html)」を参照してください。
+ **Amazon Redshift Spectrum** – 詳細については、*Amazon Redshift データベースデベロッパーガイド*の「[Amazon Redshift Spectrum を使用した外部データのクエリ](https://docs.aws.amazon.com/redshift/latest/dg/c-using-spectrum.html)」を参照してください。
+ **Amazon EMR** – 詳細については、*Amazon EMR マネジメントガイド*の「[AWS Glue Data Catalog への Amazon EMR アクセスにリソースベースのポリシーを使用する](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html)」を参照してください。
+ **Apache Hive メタストア用 AWS Glue Data Catalog クライアント** – この GitHub プロジェクトの詳細については、「[AWS Glue Data Catalog Client for Apache Hive Metastore](https://github.com/awslabs/aws-glue-data-catalog-client-for-apache-hive-metastore)」を参照してください。



## AWS Glue クローラおよび分類子
<a name="crawling-intro"></a>

AWS Glue では、あらゆる種類のリポジトリにあるデータのスキャン、分類、スキーマ情報の抽出、そのメタデータの AWS Glue Data Catalog への自動保存ができるクローラを設定することもできます。そこから AWS Glue Data Catalog は ETL オペレーションをガイドするのに使用できます。

クローラおよび分類子の設定方法については、「[クローラーを使用したデータカタログへの入力](add-crawler.md)」を参照してください。AWS Glue API を使用してクローラおよび分類子をプログラムする方法については、「[クローラーおよび分類子 API](aws-glue-api-crawler.md)」を参照してください。

## AWS Glue ETL オペレーション
<a name="etl-script-intro"></a>

AWS Glue は、Data Catalog のメタデータを使用して、さまざまな ETL オペレーションを実行するために使用や変更ができる AWS Glue 拡張機能を備えた、Scala または PySpark (Apache Spark 用の Python API) スクリプトを自動生成できます。たとえば、未加工データを抽出、クリーンアップ、および変換してからその結果を別のリポジトリに保存して、クエリと分析を行うことができます。このようなスクリプトは、CSV ファイルをリレーショナル形式に変換し、Amazon Redshift に保存する場合があります。

AWS Glue ETL 機能の使用方法の詳細については、「[Spark スクリプトのプログラミング](aws-glue-programming.md)」を参照してください。

## AWS Glue でのストリーミング ETL
<a name="streaming-etl-intro"></a>

AWS Glue を使用すると、連続実行のジョブを使用して、ストリーミングデータに対して ETL 操作を実行できます。AWS Glue のストリーミング ETL は、Apache Spark 構造化ストリーミングエンジン上に構築され、Amazon Kinesis Data Streams、Apache Kafka、および Amazon Managed Streaming for Apache Kafka (Amazon MSK) からストリームを取り込むことができます。ストリーミング ETL では、ストリーミングデータのクリーニングと変換を行い、Simple Storage Service (Amazon S3) または JDBC データストアにロードできます。AWS Glue のストリーミング ETL を使用すると、IoT ストリーム、クリックストリーム、ネットワークログなどのイベントデータを処理できます。

ストリーミングデータソースのスキーマがわかっている場合は、Data Catalog テーブルで指定できます。そうでない場合は、ストリーミング ETL ジョブでスキーマ検出を有効にできます。ジョブは、受信データからスキーマを自動的に決定します。

ストリーミング ETL ジョブは、AWS Glue 組み込みの変換および Apache Spark 構造化ストリーミングネイティブの変換の両方を使用できます。詳細については、「[Operations on streaming DataFrames/Datasets](https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#operations-on-streaming-dataframesdatasets)」 を参照してください。

詳しくは、「[AWS Glue でのストリーミング ETL ジョブ](add-job-streaming.md)」を参照してください。

## AWS Glue ジョブシステム
<a name="job-orchestration-intro"></a>

AWS Glue Jobs system は、ETL ワークフローをオーケストレーションするためのマネージド型インフラストラクチャを提供します。データを抽出したり変換したり異なる場所へ転送したりするのに使用するスクリプトを自動化するジョブを AWS Glue で作成できます。ジョブはスケジュールしたり連鎖させることができます。または新しいデータの到着などのイベントによってトリガーすることができます。

AWS Glue Jobs system の使用方法の詳細については、「[AWS Glue のモニタリング](monitor-glue.md)」を参照してください。AWS Glue Jobs system API を使用したプログラミングについては、「[ジョブ API](aws-glue-api-jobs.md)」を参照してください。

## ビジュアル ETL コンポーネント
<a name="glue-studio-ui-components"></a>

 AWS Glue では、操作可能なビジュアルキャンバスから ETL ジョブを作成できます。

![\[スクリーンショットは、リソースパネルが閉じていることを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/glue-studio-canvas.png)


### ETL ジョブメニュー
<a name="glue-studio-ui-components-menu"></a>

 キャンバスの上部にあるメニューオプションから、ジョブに関するさまざまなビューや設定の詳細にアクセスできます。
+  **[Visual]** - ビジュアルジョブエディタのキャンバスです。ここでは、ノードを追加してジョブを作成できます。
+  **スクリプト** - ETL ジョブのスクリプト表現。AWSGlue は、ジョブの視覚的表現に基づいてスクリプトを生成します。スクリプトを編集したり、ダウンロードしたりもできます。
**注記**  
 スクリプトを編集することを選択した場合、ジョブ作成体験は完全にスクリプト専用モードに変更されます。それ以後、ビジュアルエディタを使用してジョブを編集することはできません。そのため、スクリプトを編集することを選択する前に、すべてのジョブソース、変換、ターゲットを追加し、ビジュアルエディタで必要な変更をすべて行ってください。
+  **[ジョブの詳細]** - [ジョブの詳細] タブでは、ジョブのプロパティを設定することでジョブを設定できます。基本的なプロパティとして、ジョブの名前と説明、IAM ロール、ジョブタイプ、AWS Glue バージョン、言語、ワーカータイプ、ワーカー数、ジョブブックマーク、Flex 実行、廃止数、ジョブタイムアウトなどがあります。高度なプロパティとして、接続、ライブラリ、ジョブパラメータ、タグなどがあります。
+  **[Runs]** - ジョブの実行後に、このタブにアクセスして過去のジョブを表示できます。
+  **[Data quality]** - [Data quality] は、データアセットの品質を評価およびモニタリングします。このタブでは、データ品質の活用方法を詳しく確認したり、データ品質変換をジョブに追加したりできます。
+  **[Schedules]** - このタブには、スケジュールされたジョブが表示されます。このジョブにスケジュールがアタッチされていない場合、このタブにはアクセスできません。
+  **[Version control]** - ジョブを Git リポジトリに設定することで、ジョブで Git を使用できます。

### ビジュアル ETL パネル
<a name="glue-studio-ui-components-panels"></a>

 キャンバスで作業するときに、ノードの設定、データのプレビュー、出力スキーマの表示などに役立つパネルがいくつか用意されています。
+  **[プロパティ]** - キャンバス上のノードを選択すると、[プロパティ] パネルが表示されます。
+  **[Data preview]** - [Data preview] パネルには、データ出力のプレビューが表示されるため、ジョブを実行して出力を確認する前に判断を行えます。
+  **[Output schema]** - [Output schema] タブでは、変換ノードのスキーマを表示および編集できます。

 **パネルサイズを変更する** 

 画面の右側にある [プロパティ] パネルと、[Data preview] タブや [Output schema] タブを含む下部パネルのサイズを変更するには、パネルの端をクリックして左右または上下にドラッグします。
+  **[プロパティ] パネル** - [プロパティ] パネルのサイズを変更するには、画面の右側にあるキャンバスの端をクリックしてドラッグし、左にドラッグして幅を拡大します。デフォルトでは、パネルは折りたたまれており、ノードを選択すると、[プロパティ] パネルがデフォルトサイズで表示されます。
+  **[Data preview] と [Output schema] パネル** - 下部パネルのサイズを変更するには、画面の下部にあるキャンバスの下端をクリックしてドラッグし、上にドラッグして高さを拡大します。デフォルトでは、パネルは折りたたまれており、ノードを選択すると、下部パネルがデフォルトサイズで表示されます。

### ジョブキャンバス
<a name="glue-studio-ui-components-canvas"></a>

 ビジュアル ETL キャンバスでは、ノードの追加、削除、移動/順序変更を直接行えます。これは、データソースで始まりデータターゲットで終わる、完全に機能する ETL ジョブを作成するためのワークスペースと考えてください。

 キャンバス上のノードを操作するときに、ツールバーを使用できます。ツールバーでは、ズームインとズームアウト、ノードの削除、ノード間の接続の作成または編集、ジョブフローの向きの変更、アクションを元に戻す/やり直すなどが行えます。

![\[スクリーンショットは、リソースパネルが閉じていることを示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/glue-studio-canvas-toolbar.png)


 フローティングツールバーはキャンバス画面の右上に固定されており、アクションを実行する複数のアイコン画像が表示されています。
+  **レイアウトアイコン** - レイアウトアイコンは、ツールバーの一番上のアイコンです。デフォルトでは、ビジュアルジョブの方向は上から下です。ノードを左から右に水平に配置することで、ビジュアルジョブの配置方向を変更します。レイアウトアイコンを再度クリックすると、方向は上から下に戻ります。
+  **リセンタリングアイコン** - リセンタリングアイコンは、キャンバスの表示位置を中央に変更します。大規模なジョブで、中央位置に戻るときに活用できます。
+  **ズームインアイコン** - ズームインアイコンは、キャンバス上のノードのサイズを拡大します。
+  **ズームアウトアイコン** - ズームアウトアイコンは、キャンバス上のノードのサイズを縮小します。
+  **ゴミ箱アイコン** - ゴミ箱アイコンは、ビジュアルジョブからノードを削除します。先にノードを選択しておく必要があります。
+  **元に戻すアイコン** - 元に戻すアイコンは、ビジュアルジョブで最後に実行したアクションを取り消します。
+  **やり直すアイコン** - やり直すアイコンは、ビジュアルジョブで最後に実行されたアクションをやり直します。

 **ミニマップを使用する** 

![\[スクリーンショットはミニマップの拡大図です。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/glue-studio-canvas-minimap.png)


### リソースパネル
<a name="glue-studio-ui-components-canvas-resource-panel"></a>

 リソースパネルには、使用可能なデータソース、変換アクション、接続がすべて含まれています。キャンバスでリソースパネルを表示するには、[\$1] アイコンをクリックします。これで、リソースパネルが開きます。

 リソースパネルを閉じるには、リソースパネルの右上隅にある **[X]** をクリックします。これにより、再び開く準備ができるまでパネルが非表示になります。

![\[スクリーンショットは、リソースパネルが表示されている状態を示しています。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/resource-panel-open.png)


#### [Popular transforms & data]
<a name="glue-studio-ui-components-popular-transforms"></a>

 パネルの上部に、**[Popular transforms & data]** というコレクションがあります。これらのノードは、AWS Glue で一般的に使用されるものです。いずれかを選択してキャンバスに追加します。また、**[Popular transforms & data]** の見出しの横にある三角アイコンをクリックすると、**[Popular transforms & data]** を非表示にできます。

 **[Popular transforms & data]** セクションの下で、変換およびデータソースノードを検索できます。入力すると結果が表示されます。検索クエリに追加する文字が多いほど、表示される結果は少なくなります。検索結果には、ノードの名前または説明が表示されます。結果に表示されたノードを選択してキャンバスに追加します。

#### [Transforms] と [Data]
<a name="glue-studio-ui-components-transforms-and-data"></a>

 ノードを **[Transforms]** と **[Data]** に整理する 2 つのタブがあります。

 **[Transforms]** – **[Transforms]** タブを選択すると、使用可能なすべての変換を選択できます。変換を選択してキャンバスに追加します。また、[Transforms] リストの下部にある **[変換の追加]** をクリックすると、[カスタムビジュアル変換](https://docs.aws.amazon.com/glue/latest/ug/custom-visual-transform.html)を作成するためのドキュメントへの新しいページが開きます。手順に従うことで、独自の変換を作成できます。この変換はその後、使用可能な変換のリストに表示されます。

 **[Data]** – [Data] タブには、**[ソース]** と **[ターゲット]** のノードがすべて含まれています。[ソース] と [ターゲット] を非表示にするには、[ソース] または [ターゲット] の見出しの横にある三角アイコンをクリックします。三角アイコンを再度クリックすると、[ソース] と [ターゲット] を再表示できます。ソースノードまたはターゲットノードを選択し、キャンバスに追加します。また、**[Manage Connections]** をクリックすると、新しい接続を追加できます。このとき、コンソールのコネクタページが開きます。

# AWS Glue for Spark と AWS Glue for Ray
<a name="how-it-works-engines"></a>

AWS Glue on Apache Spark (AWS Glue ETL) では、PySpark を使用して、大規模なデータを処理する Python コードを書くことができます。Spark はこの問題に対する一般的な解決策ですが、Python 専門の経歴を持つデータエンジニアは、直感的な移行ではないと感じるかもしれません。Spark DataFrame モデルはシームレスに「Python らしい」というわけではなく、Scala 言語と、それが構築されている Java ランタイムを反映しています。

AWS Glue では、Python シェルジョブを使用してネイティブな Python データ統合を実行できます。これらのジョブは、単一の Amazon EC2 インスタンス上で実行され、そのインスタンスの容量によって制限されます。これにより、処理できるデータのスループットが制限され、ビッグデータを処理する場合は維持費が高くなります。

AWS Glue for Ray では、Spark の学習に多額の投資をすることなく Python ワークロードをスケールアップできます。Ray のパフォーマンスが向上する特定のシナリオを使用できます。選択肢が提供されることで、Spark と Ray の両方の強みを活用できます。

AWS Glue ETL と AWS Glue for Ray は根本的に異なるため、サポートしている機能も異なります。サポートされている機能については、ドキュメントを確認してください。

## AWS Glue for Ray とは
<a name="how-it-works-ray"></a>

Ray は Python を中心に、ワークロードのスケールアップに使用できるオープンソースの分散計算フレームワークです。Ray の詳細については、[Ray のウェブサイト](https://www.ray.io/)を参照してください。 AWS GlueRay ジョブおよびインタラクティブセッションにより、AWS Glue 内で Ray を使用できます。

AWS Glue for Ray を使用して、複数のマシンで並列に実行される計算用の Python スクリプトを作成できます。Ray ジョブおよびインタラクティブセッションでは、pandas などの使い慣れた Python ライブラリを使用して、ワークフローを簡単に記述して実行できます。Ray データセットの詳細については、Ray ドキュメントの「[Ray データセット](https://docs.ray.io/en/latest/data/dataset.html)」を参照してください。pandas の詳細については、[Pandas のウェブサイト](https://pandas.pydata.org/)を参照してください。

AWS Glue for Ray を使用すると、わずか数行のコードだけで、企業規模のビッグデータに対する pandas のワークフローを実行できます。Ray ジョブは、AWS Glue コンソールまたは AWS SDK から作成できます。AWS Glue インタラクティブセッションを開いて、サーバーレスの Ray 環境でコードを実行することもできます。AWS Glue Studio のビジュアルジョブはまだサポートされていません。

AWS Glue for Ray ジョブを使用すると、スケジュールに従って、または Amazon EventBridge からのイベントに応じてスクリプトを実行できます。ジョブはログ情報とモニタリング統計を CloudWatch に保存するため、スクリプトの正常性と信頼性を確認できます。AWS Glue ジョブのシステムについての詳細は、「[AWS Glue での Ray ジョブの使用](ray-jobs-section.md)」を参照してください。

Ray は、負荷に基づいてリアルタイムで再設定を行うマシンのクラスターに処理を分散することで、Python コードのスケーリング作業を自動化します。これにより、特定のワークロードで 1 ドルあたりのパフォーマンスが向上します。Ray ジョブでは、AWS Glue のジョブモデルに自動スケーリングがネイティブに組み込まれているため、この機能を最大限に活用できます。Ray ジョブは AWS Graviton 上で実行されるため、全体的な価格パフォーマンスが向上します。

コストの削減に加えて、ネイティブの自動スケーリングを使用すると、クラスターのメンテナンス、調整、管理に時間を費やすことなく Ray のワークロードを実行できます。pandas や AWS SDK for Pandas など、使い慣れたオープンソースライブラリをそのまま使用できます。これにより、AWS Glue for Ray で開発する際のイテレーション速度が向上します。AWS Glue for Ray を使用すると、費用対効果の高いデータ統合ワークロードをすばやく開発して実行できるようになります。

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/OJ3ZngYTyNE/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/OJ3ZngYTyNE)


# AWS Glue を使用して半構造化されたスキーマをリレーショナルスキーマに変換する
<a name="schema-relationalize"></a>

半構造化データをリレーショナルテーブルに変換することが一般的です。概念的には、階層的なスキーマをリレーショナルスキーマに平坦化します。AWS Glue は、この変換を臨機応変に実行できます。

通常、半構造化されたデータには、データ内のエンティティを識別するためのマークアップが含まれています。固定されたスキーマのない、ネスト化されたデータ構造を持つことができます。半構造化データの詳細については、Wikipedia の [半構造化データ](https://en.wikipedia.org/wiki/Semi-structured_data) を参照してください。

リレーショナルデータは、行と列で構成されるテーブルで表されます。テーブル間の関係は、プライマリキー (PK) と外部キー (FK) の関係によって表すことができます。詳細については、Wikipedia の [リレーショナルデータベース](https://en.wikipedia.org/wiki/Relational_database) を参照してください。

AWS Glue は、クローラを使用して半構造化データのスキーマを推測します。次に、ETL (抽出、変換、ロード) ジョブを使用してデータをリレーショナルスキーマに変換します。例えば、JSON データを解析して、Amazon Simple Storage Service (Amazon S3) ソースファイルから Amazon Relational Database Service (Amazon RDS) テーブルに変換したい場合があります。AWS Glue がスキーマの違いを処理する方法を理解すると、変換プロセスを理解するうえで役立ちます。

この図は、AWS Glue が半構造化スキーマをリレーショナルスキーマに変換する方法を示しています。

![\[半構造化からリレーショナルスキーマへの変換を示した図。\]](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/images/HowItWorks-schemaconversion.png)


この図表は、以下を示すものです:
+ 単一の値 `A` は、直接リレーショナル列に変換されます。
+ 値のペアである `B1` および `B2` は、2 つのリレーショナル列に変換されます。
+ 子の `X` と `Y` を持つ `C` 構造は、2 つのリレーショナル列に変換されます。
+ 配列 `D[]` は、別のリレーショナルテーブルを指す外部キー (FK) 列のリレーショナル列に変換されます。2 番目のリレーショナルテーブルには、プライマリキー (PK) に加えて、オフセットと配列の項目の値を含む列があります。

# AWS Glue 型システム
<a name="glue-types"></a>

 AWS Glue は、複数の型のシステムを使用し、さまざまな方法でデータを格納するデータシステムに対して汎用性の高いインターフェイスを提供します。このドキュメントでは、AWS Glue 型システムとデータ標準を明確にします。

## AWS Glue データカタログ型
<a name="glue-types-catalog"></a>

データカタログは、さまざまなデータシステムに格納されているテーブルとフィールドのレジストリであり、メタストアです。AWS Glue クローラーや AWS Glue with Spark ジョブなどの AWS Glue コンポーネントをデータカタログに書き込むときは、フィールドの型を追跡するための内部型システムを使用して書き込みを行います。これらの値は、AWS Glue コンソールのテーブルスキーマの**データ型**列に表示されます。このタイプのシステムは、Apache Hive の型のシステムに基づいています。Apache Hive の型のシステムの詳細については、Apache Hive wiki の「[型](https://cwiki.apache.org/confluence/display/hive/languagemanual+types)」を参照してください。特定の型とサポートの詳細については、スキーマビルダーの一部として AWS Glue コンソールに例が用意されています。

### 検証、互換性、その他の用途
<a name="w2aac11c31b5b5"></a>

データカタログは、型フィールドに書き込まれた型を検証しません。AWS Glue コンポーネントがデータカタログを読み書きする場合、相互に互換性を保つことができます。AWSGlue コンポーネントは、Hive 型との高い互換性を保つことも目的としています。ただし、AWS Glue コンポーネントはすべての Hive 型との互換性を保証するものではありません。これにより、データカタログ内のテーブルを操作するときに Athena DDL などのツールとの相互運用が可能になります。

データカタログは型を検証しないため、他のサービスは、Hive の型のシステムに厳密に準拠するシステムやその他のシステムを使用することで、型を追跡するためにデータカタログを利用できます。

## Spark スクリプトを使用した AWS Glue の型
<a name="glue-types-spark"></a>

Spark スクリプトを使用した AWS Glue がデータセットを解釈または変換する場合、スクリプトで使用されているデータセットのインメモリ表現である `DynamicFrame` が提供されます。`DynamicFrame` の目的は、Spark `DataFrame` と似ています。つまり、Spark がデータに対して変換をスケジュールして実行できるようにデータセットをモデル化します。`toDF` および `fromDF` メソッドを提供することにより、`DynamicFrame` の型表現が `DataFrame` と相互互換であることを保証します。

型情報を `DataFrame` に推測または提供できる場合は、特に文書化されていない限り、`DynamicFrame` に推測または提供できます。特定のデータ形式向けに最適化されたリーダーまたはライターを提供するとき、Spark がお客様のデータを読み書きできる場合は、文書に記載されている制限に従って、提供されているリーダーおよびライターも読み取りまたは書き込みを行うことができます。リーダーおよびライターの詳細については、「[AWS Glue for Spark での入出力のデータ形式に関するオプション](aws-glue-programming-etl-format.md)」を参照してください。

### Choice 型
<a name="w2aac11c31b7b7"></a>

`DynamicFrames` は、ディスク上の行ごとの値が一貫性のない型を持つ可能性があるデータセットのフィールドをモデル化するメカニズムを提供します。例えば、フィールドで特定の行に文字列として格納された数値が、他の行では整数として格納されている場合があります。このメカニズムは `Choice` と呼ばれるインメモリ型です。`ResolveChoice` メソッドのような、Choice の列を具体的な型に解決するための変換を行うことができます。AWSGlue ETL では、通常の操作では Choice 型をデータカタログに書き込むことはありません。Choice 型は、データセットの DynamicFrame メモリモデルのコンテキストでのみ存在します。Choice 型の使用例については、「[コード例: ResolveChoice、Lambda、および ApplyMapping を使用したデータ準備](aws-glue-programming-python-samples-medicaid.md)」を参照してください。

## AWS Glue クローラーの型
<a name="glue-types-crawler"></a>

クローラーは、データセット用に一貫性のある使いやすいスキーマを作成し、それをデータカタログに格納して他の AWS Glue コンポーネントや Athena で使用できるようにすることを目的としています。クローラーは、データカタログの前のセクション「[AWS Glue データカタログ型](#glue-types-catalog)」で説明したように、型を扱います。列に 2 つ以上の型の値が含まれる「Choice」型のシナリオで使用可能な型を作成するために、クローラーは潜在的な型をモデル化した `struct` 型を作成します。