Python
 Computer >> コンピューター >  >> プログラミング >> Python

Boto3を使ってAWS Glueデータカタログのジョブブックマーク詳細を取得する方法

この記事では、Pythonのboto3ライブラリを使用して、AWS Glueデータカタログに保存されているジョブブックマークの詳細情報を取得する方法を解説します。

AWS Glueデータカタログ内のブックマーク済みジョブ「book-job」の詳細情報を取得します。

課題

Pythonのboto3ライブラリを使って、AWS Glueデータカタログに登録されたジョブブックマークの詳細を取得することです。

解決のためのアプローチと手順

ステップ1: 例外処理のために、boto3とbotocore.exceptionsをインポートします。

ステップ2: bookmarked_job_nameは必須パラメータです。すでにブックマークが作成されているjob_nameを指定する必要があります。存在しないジョブ名を指定すると、EntityNotFoundExceptionが発生します。

ステップ3: boto3ライブラリを使用してAWSセッションを作成します。デフォルトプロファイルにregion_nameが設定されていることを確認してください。設定されていない場合は、セッション作成時に明示的にregion_nameを渡す必要があります。

ステップ4: AWS Glue用のクライアントを作成します。

ステップ5: get_job_bookmark関数を使用し、JobNameパラメータとしてbookmarked_job_nameを渡します。

ステップ6: ブックマークエントリに関連する詳細情報が返されます。なお、指定したjob_nameがブックマークされていない場合は、EntityNotFound例外がスローされる点に注意してください。

ステップ7: ジョブの確認中に予期しない問題が発生した場合に備えて、汎用例外も処理しておきます。

サンプルコード

以下のコードを使用して、AWS Glueデータカタログ内のブックマーク済みジョブの詳細を取得できます。

import boto3
from botocore.exceptions import ClientError

def retrieves_details_of_bookmarked_job(bookmarked_job_name):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        response = glue_client.get_job_bookmark(JobName=bookmarked_job_name)
        return response
    except ClientError as e:
        raise Exception("boto3 client error in retrieves_details_of_bookmarked_job: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in retrieves_details_of_bookmarked_job: " + e.__str__())

print(retrieves_details_of_bookmarked_job("book-job"))

出力結果

{'JobBookmarkEntry': {'JobName': 'book-job', 'Version': 8, 'Run': 2,
'Attempt': 2,
'PreviousRunId': 'jr_dee547c2f78422e34136aa12c85de010b823787833eee04fbf34bc9b8cb4f7b9',
'RunId': 'jr_a035fe15daa31e9a751f02876c26e5d11a829f2689803a9e9643bd61f70273e4',
'JobBookmark': '{"gdf":{"jsonClass":"HadoopDataSourceJobBookmarkState","timestamps":{"RUN":"1","HIGH_BAND":"900000","CURR_LATEST_PARTITION":"0","CURR_LATEST_PARTITIONS":"","CURR_RUN_START_TIME":"2020-10-30T13:03:43.730Z","INCLUDE_LIST":""}}}'},
'ResponseMetadata': {'RequestId': 'bacf1497-***************996f05b3c1',
'HTTPStatusCode': 200,
'HTTPHeaders': {'date': 'Sun, 28 Feb 2021 13:00:19 GMT',
'content-type': 'application/x-amz-json-1.1', 'content-length': '535',
'connection': 'keep-alive',
'x-amzn-requestid': 'bacf1497-******************996f05b3c1'},
'RetryAttempts': 0}}

出力のポイント

レスポンスのJobBookmarkEntryには、ジョブ名やバージョン(Version)、実行回数(Run)、試行回数(Attempt)、前回および今回のRunIdなど、ブックマークの状態を示す重要な情報が含まれています。JobBookmarkフィールドには、処理済みデータの位置情報(タイムスタンプや最新パーティションなど)がJSON形式で格納されており、Glueジョブの増分処理において、前回の実行からどこまで処理したかを再開するために利用されます。

また、このAPIを呼び出すIAMユーザーやロールには、Glueに対する適切な読み取り権限(glue:GetJobBookmark など)が付与されている必要がある点にも留意してください。

  1. Boto3を使ってAWS Glue Data Catalogから分類子(Classifier)の詳細を取得する方法

    AWS Glue Data Catalogには、クローラがデータ形式を自動的に識別するために使用する「分類子(Classifier)」を登録できます。本記事では、Pythonのboto3ライブラリを使って、登録済みの分類子の詳細情報を取得する方法を解説します。例として、「xml-test」という名前の分類子の詳細を取得してみましょう。 分類子(Classifier)とは 分類子は、AWS GlueのクローラがS3などのデータストア内のデータを解析する際に、そのデータがJSON・CSV・XML・Grokパターンなどのどの形式に該当するかを判定するために利用される仕組みです。get_classi

  2. Boto3を使って複数のAWS Glueジョブの詳細を一括取得する方法

    この記事では、指定したジョブ名のリストに対して、リソースメタデータの一覧を取得する方法を解説します。課題 − Pythonのboto3ライブラリを使用して、自分のアカウントに存在するジョブの情報を取得します。例として、アカウント内で利用可能なすべてのジョブの詳細情報を取得してみましょう。問題を解決するためのアプローチとアルゴリズムステップ1 − 例外処理のために、boto3とbotocoreの例外モジュールをインポートします。ステップ2 − この関数にはパラメータは不要です。ユーザーアカウントに登録されているすべてのジョブを取得し、各ジョブのメタデータを表示します。ステップ3 − boto3ラ