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 マネジメントコンソール にサインインして 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 コンソールでクローラーを使用する」を参照してください。

  • 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 (,)] (カンマ (,)) を選択します。[次へ] を選択します。

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

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

    1. 列名を入力します。

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

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

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

  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')