AWS Glue Data Catalog の開始方法 - AWS Glue

AWS Glue Data Catalog の開始方法

AWS Glue Data Catalog は永続的な技術メタデータストアです。AWS クラウドでメタデータを保存、注釈付け、および共有するために使用することができるマネージド型サービスです。詳細については、「AWS Glue Data Catalog」を参照してください。

AWS Glue コンソールおよび一部のユーザーインターフェイスが最近更新されました。

概要

このチュートリアルを使用して、最初の AWS Glue データカタログを作成できます。このデータカタログは、データソースとして Simple Storage Service (Amazon S3) バケットを使用します。

このチュートリアルでは、AWS Glue コンソールを使用して以下の作業を行います。

  1. データベースの作成

  2. テーブルを作成する

  3. データソースとして Amazon S3 バケットを使用します。

これらのステップを完了すると、データソースとして Amazon S3 バケットを使用して、AWS Glue データカタログにデータを入力できるようになります。

ステップ 1: データベースを作成する

開始するには、AWS Management Console にサインインして AWS Glue コンソール を開きます。

AWS Glue コンソールを使用してデータベースを作成する:

  1. AWS Glue コンソールで、左側のメニューにある [Data catalog] (データカタログ) から、 [Databases] (データベース) を選択します。

  2. [Add database] (データベースの追加) を選択します。

  3. [データベースの作成] ページで、データベースの名前を入力します。[Location - optional] セクションで、データカタログのクライアントが使用する URI の場所を設定します。これがわからない場合は、データベースの作成を続行してください。

  4. (オプション)。データベースの説明を入力します。

  5. [データベースの作成] を選択します。

これで、AWS Glue コンソールで最初のデータベースの作成が終わりました。新しいデータベースが、使用可能なデータベースのリストに表示されます。データベースは、[Databases] (データベース) ダッシュボードからデータベースの名前を選択することで編集できます。

次のステップ

[Other ways to create a database: ] (データベースを作成するその他の方法)

AWS Glue コンソールでデータベースを作成しましたが、データベースを作成する方法は他にもあります。

  • クローラーを使用して、データベースとテーブルを自動的に作成することができます。クローラーを使用してデータベースを設定するには、「AWS Glue コンソールでクローラーを使用する」を参照してください。

  • AWS CloudFormation テンプレートを使用できます。「AWS Glue リソースをAWS Glue Data Catalog テンプレートで作成する」を参照してください。

  • AWS Glue データベース API オペレーションを使用してデータベースを作成することもできます。

    create オペレーションを使用してデータベースを作成するには、DatabaseInput (必須) パラメータを含めてリクエストを構成します。

    例:

    CLI、Boto3、または DDL を使用して、チュートリアルで使用した S3 バケットからの同じ flights_data.csv ファイルに基づいてテーブルを定義する方法の一例を以下に示します。

    CLI
    aws glue create-database --database-input "{\"Name\":\"clidb\"}"
    Boto3
    glueClient = boto3.client('glue') response = glueClient.create_database( DatabaseInput={ 'Name': 'boto3db' } )

Database API のデータタイプ、構造、およびオペレーションの詳細については、「データベース API」を参照してください。

次のステップ

次のセクションでは、テーブルを作成し、そのテーブルをデータベースに追加します。

データカタログの設定とアクセス許可を確認することもできます。「AWS Glue コンソールでデータカタログ設定を使用する」を参照してください。

ステップ 2。テーブルを作成する

このステップでは、AWS Glue コンソールを使用してテーブルを作成します。

  1. AWS Glue コンソールで、左側のメニューにある[Tables] (テーブル) を選択します。

  2. [Add table (テーブルの追加)] を選択します。

  3. [Table details] (テーブルの詳細) でテーブルの名前を入力して、テーブルのプロパティを設定します。

  4. [Databases] (データベース) セクションのドロップダウンメニューから、ステップ 1 で作成したデータベースを選択します。

  5. [Add a data store] (データストアの追加) セクションのデフォルト状態では、ソースのタイプとして [S3] が選択されています。

  6. [Data located in] (データがある場所) で、[Specified path in another account] (他のアカウントの指定したパス) を選択します。

  7. パスをコピーして、[Include path] (パスを含める) の入力フィールドに貼り付けます。

    s3://crawler-public-us-west-2/flight/2016/csv/

  8. [Data format] (データ形式) セクションにある [Classification] (分類) で [CSV] を選択し、[Delimiter] (区切り記号) では [comma (,)] (カンマ (,)) を選択します。[Next] を選択します。

  9. スキーマを定義するように求められます。スキーマは、データレコードの構造と形式を定義します。[Add column] (列の追加) を選択します。(詳細については、「スキーマレジストリ」を参照してください)。

  10. 列のプロパティを指定します。

    1. 列名を入力します。

    2. [Column type] (列タイプ) の場合、デフォルトで 'string' が既に選択されています。

    3. [Column number] (列番号) の場合、デフォルトで '1' が既に選択されています。

    4. [追加] を選択します。

  11. パーティションインデックスを追加するように求められます。これはオプションです。このステップをスキップするには、[Next] (次へ) を選択します。

  12. テーブルプロパティのサマリーが表示されます。すべてが期待とおりに動作している場合、[作成] を選択します。それ以外の場合は、[Back] (戻る) を選択して、必要に応じて編集します。

これで、テーブルを手動で作成し、データベースに関連付ける作業が完了しました。新しく作成したテーブルは [Tables] (テーブル) ダッシュボードに表示されます。ダッシュボードからは、すべてのテーブルの編集と管理を行うことができます。

詳細については、「AWS Glue コンソールでテーブルを操作する」を参照してください。

次のステップ

次のステップ

データカタログを入力した後は、AWS Glue でジョブの作成を開始できます。「AWS Glue Studio でビジュアル ETL ジョブの作成」を参照してください。

コンソールを使用する以外にも、データカタログでテーブルを定義する方法として、次のような方法があります。

  • クローラーを作成して実行する

  • AWS Glue のクローラーに分類子の追加

  • AWS Glue テーブル API を使用する

  • AWS Glue Data Catalog テンプレートを使用する

  • Apache Hive メタストアを移行する

  • AWS CLI、Boto3、またはデータ定義言語 (DDL) を使用する

    CLI、Boto3、または DDL を使用して、チュートリアルで使用した S3 バケットからの同じ flights_data.csv ファイルに基づいてテーブルを定義する方法の一例を以下に示します。

    AWS CLI コマンドを構造化する方法については、ドキュメントを参照してください。CLI の例には、「aws glue create-table --table-input」値の JSON 構文が含まれています。

    CLI
    { "Name": "flights_data_cli", "StorageDescriptor": { "Columns": [ { "Name": "year", "Type": "bigint" }, { "Name": "quarter", "Type": "bigint" } ], "Location": "s3://crawler-public-us-west-2/flight/2016/csv", "InputFormat": "org.apache.hadoop.mapred.TextInputFormat", "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat", "Compressed": false, "NumberOfBuckets": -1, "SerdeInfo": { "SerializationLibrary": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe", "Parameters": { "field.delim": ",", "serialization.format": "," } } }, "PartitionKeys": [ { "Name": "mon", "Type": "string" } ], "TableType": "EXTERNAL_TABLE", "Parameters": { "EXTERNAL": "TRUE", "classification": "csv", "columnsOrdered": "true", "compressionType": "none", "delimiter": ",", "skip.header.line.count": "1", "typeOfData": "file" } }
    Boto3
    import boto3 glue_client = boto3.client("glue") response = glue_client.create_table( DatabaseName='sampledb', TableInput={ 'Name': 'flights_data_manual', 'StorageDescriptor': { 'Columns': [{ 'Name': 'year', 'Type': 'bigint' }, { 'Name': 'quarter', 'Type': 'bigint' }], 'Location': 's3://crawler-public-us-west-2/flight/2016/csv', 'InputFormat': 'org.apache.hadoop.mapred.TextInputFormat', 'OutputFormat': 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat', 'Compressed': False, 'NumberOfBuckets': -1, 'SerdeInfo': { 'SerializationLibrary': 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe', 'Parameters': { 'field.delim': ',', 'serialization.format': ',' } }, }, 'PartitionKeys': [{ 'Name': 'mon', 'Type': 'string' }], 'TableType': 'EXTERNAL_TABLE', 'Parameters': { 'EXTERNAL': 'TRUE', 'classification': 'csv', 'columnsOrdered': 'true', 'compressionType': 'none', 'delimiter': ',', 'skip.header.line.count': '1', 'typeOfData': 'file' } } )
    DDL
    CREATE EXTERNAL TABLE `sampledb`.`flights_data` ( `year` bigint, `quarter` bigint) PARTITIONED BY ( `mon` string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://crawler-public-us-west-2/flight/2016/csv/' TBLPROPERTIES ( 'classification'='csv', 'columnsOrdered'='true', 'compressionType'='none', 'delimiter'=',', 'skip.header.line.count'='1', 'typeOfData'='file')