マップクラス - AWS Glue

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

マップクラス

入力 DynamicFrame ですべてのレコードに関数を適用して、新しい DynamicFrame をビルドします。

Methods

__call__(frame, f, transformation_ctx="", info="", stageThreshold=0, totalThreshold=0)

指定された関数を元の DynamicFrame で、すべての DynamicRecords に適用した結果の新しい DynamicFrame を返します。

  • frame - マッピング関数を適用する元の DynamicFrame (必須)。

  • f— すべてのに適用する関数DynamicRecords()DynamicFrame。この関数は、DynamicRecord を引数として取り、マッピングによって生成された新しい DynamicRecord を返す必要があります (必須)。

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

  • transformation_ctx - 状態情報を識別するために使用される一意の文字列 (オプション)。

  • info - 変換のエラーに関連付けられた文字列 (オプション)。

  • stageThreshold - エラーが発生する前に変換で発生する可能性のあるエラーの最大数 (オプション、デフォルト値は 0)。

  • totalThreshold - 処理がエラーを出す前に全体的に発生する可能性のあるエラーの最大数 (オプション、デフォルト値は 0)。

指定された関数を元の DynamicFrame で、すべての DynamicRecords に適用した結果の新しい DynamicFrame を返します。

apply(cls, *args, **kwargs)

継承元は GlueTransform apply

name(cls)

継承元は GlueTransform name

describeArgs(cls)

継承元は GlueTransform describeArgs

describeReturn(cls)

継承元は GlueTransform describeReturn

describeTransform(cls)

継承元は GlueTransform describeTransform

describeErrors(cls)

継承元は GlueTransform describeErrors

describe(cls)

継承元は GlueTransform 説明

AWSGlue の例

この例では、Map 変換を使用して、いくつかのフィールドを 1 つの struct 型にマージします。この例で使用されているデータセットは、Medicare Provider の 2 つのcms.govデータセット: 「診断関連グループの入院患者予定支払システムプロバイダーの概要-2011 会計年度」および「入院料金データ」です。

サンプルデータをダウンロードした後に修正して、ファイルの最後にいくつかエラーのあるレコードを追加しました。この変更されたファイルはのパブリック Amazon S3 バケット内にあります。s3://awsglue-datasets/examples/medicare/Medicare_Hospital_Provider.csv。このデータセットを使用する別の例については、「コード例: ResolveChoice、Lambda、および ApplyMapping を使用したデータ準備」を参照してください。

データの DynamicFrame を作成して開始します。

from awsglue.context import GlueContext from awsglue.transforms import * from pyspark.context import SparkContext glueContext = GlueContext(SparkContext.getOrCreate()) dyF = glueContext.create_dynamic_frame.from_options( 's3', {'paths': ['s3://awsglue-datasets/examples/medicare/Medicare_Hospital_Provider.csv']}, 'csv', {'withHeader': True}) print "Full record count: ", dyF.count() dyF.printSchema()

このコードの出力は次のようになります。

Full record count: 163065L root |-- DRG Definition: string |-- Provider Id: string |-- Provider Name: string |-- Provider Street Address: string |-- Provider City: string |-- Provider State: string |-- Provider Zip Code: string |-- Hospital Referral Region Description: string |-- Total Discharges: string |-- Average Covered Charges: string |-- Average Total Payments: string |-- Average Medicare Payments: string

次に、マッピング関数を作成し、DynamicRecord 内のプロバイダアドレスフィールドを struct にマージしてから、個々のアドレスフィールドを削除します。

def MergeAddress(rec): rec["Address"] = {} rec["Address"]["Street"] = rec["Provider Street Address"] rec["Address"]["City"] = rec["Provider City"] rec["Address"]["State"] = rec["Provider State"] rec["Address"]["Zip.Code"] = rec["Provider Zip Code"] rec["Address"]["Array"] = [rec["Provider Street Address"], rec["Provider City"], rec["Provider State"], rec["Provider Zip Code"]] del rec["Provider Street Address"] del rec["Provider City"] del rec["Provider State"] del rec["Provider Zip Code"] return rec

このマッピング関数では、rec["Address"] = {} という行は新しい構造体を含む入力 DynamicRecord の辞書を作成します。

注記

Python の map フィールドは、ここではサポートされていません。たとえば、次のような行を持つことはできません。

rec["Addresses"] = [] # ILLEGAL!

rec["Address"]["Street"] = rec["Provider Street Address"] のような行は、Python ディクショナリ構文を使用してフィールドを新しい構造体に追加します。

アドレス行が新しい構造体に追加された後、del rec["Provider Street Address"] のような行は DynamicRecord から個々のフィールドを削除します。

これで、Map 変換を使用して、DynamicFrame 内のすべてのDynamicRecords にマッピング関数を適用できます。

mapped_dyF = Map.apply(frame = dyF, f = MergeAddress) mapped_dyF.printSchema()

出力は次のとおりです。

root |-- Average Total Payments: string |-- Average Covered Charges: string |-- DRG Definition: string |-- Average Medicare Payments: string |-- Hospital Referral Region Description: string |-- Address: struct | |-- Zip.Code: string | |-- City: string | |-- Array: array | | |-- element: string | |-- State: string | |-- Street: string |-- Provider Id: string |-- Total Discharges: string |-- Provider Name: string