

# AWS Glue PySpark 変換リファレンス
<a name="aws-glue-programming-python-transforms"></a>

AWS Glue には、PySpark ETL オペレーションに使用できる、次の組み込み変換が用意されています。データは、変換から変換へと *DynamicFrame* というデータ構造で渡されます。これは、Apache Spark SQL `DataFrame` を拡張したものです。`DynamicFrame` にはデータが含まれており、データを処理するためにそのスキーマを参照します。

これらの変換のほとんどは、`DynamicFrame` クラスのメソッドとしても存在します。詳細については、「[DynamicFrame transforms](aws-glue-api-crawler-pyspark-extensions-dynamic-frame.md#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-_transforms)」(DynamicFrame 変換) を参照してください。
+ [GlueTransform 基本クラス](aws-glue-api-crawler-pyspark-transforms-GlueTransform.md)
+ [ApplyMapping クラス](aws-glue-api-crawler-pyspark-transforms-ApplyMapping.md)
+ [DropFields クラス](aws-glue-api-crawler-pyspark-transforms-DropFields.md)
+ [DropNullFields クラス](aws-glue-api-crawler-pyspark-transforms-DropNullFields.md)
+ [ErrorsAsDynamicFrame クラス](aws-glue-api-crawler-pyspark-transforms-ErrorsAsDynamicFrame.md)
+ [EvaluateDataQuality クラス](aws-glue-api-crawler-pyspark-transforms-EvaluateDataQuality.md)
+ [FillMissingValues クラス](aws-glue-api-crawler-pyspark-transforms-fillmissingvalues.md)
+ [フィルタクラス](aws-glue-api-crawler-pyspark-transforms-filter.md)
+ [FindIncrementalMatches クラス](aws-glue-api-crawler-pyspark-transforms-findincrementalmatches.md)
+ [FindMatches クラス](aws-glue-api-crawler-pyspark-transforms-findmatches.md)
+ [FlatMap クラス](aws-glue-api-crawler-pyspark-transforms-flat-map.md)
+ [Join クラス](aws-glue-api-crawler-pyspark-transforms-join.md)
+ [マップクラス](aws-glue-api-crawler-pyspark-transforms-map.md)
+ [MapToCollection クラス](aws-glue-api-crawler-pyspark-transforms-MapToCollection.md)
+ [mergeDynamicFrame](aws-glue-api-crawler-pyspark-extensions-dynamic-frame.md#aws-glue-api-crawler-pyspark-extensions-dynamic-frame-merge)
+ [クラスの関連付け](aws-glue-api-crawler-pyspark-transforms-Relationalize.md)
+ [RenameField クラス](aws-glue-api-crawler-pyspark-transforms-RenameField.md)
+ [ResolveChoice クラス](aws-glue-api-crawler-pyspark-transforms-ResolveChoice.md)
+ [SelectFields クラス](aws-glue-api-crawler-pyspark-transforms-SelectFields.md)
+ [SelectFromCollection クラス](aws-glue-api-crawler-pyspark-transforms-SelectFromCollection.md)
+ [Simplify\_ddb\_json class](aws-glue-api-crawler-pyspark-transforms-simplify-ddb-json.md)
+ [スピゴットクラス](aws-glue-api-crawler-pyspark-transforms-spigot.md)
+ [SplitFields クラス](aws-glue-api-crawler-pyspark-transforms-SplitFields.md)
+ [SplitRows クラス](aws-glue-api-crawler-pyspark-transforms-SplitRows.md)
+ [Unbox クラス](aws-glue-api-crawler-pyspark-transforms-Unbox.md)
+ [UnnestFrame クラス](aws-glue-api-crawler-pyspark-transforms-UnnestFrame.md)

## データ統合変換
<a name="aws-glue-programming-python-di-transforms"></a>

 AWS Glue 4.0 以降では、`key: --enable-glue-di-transforms, value: true` を使用してジョブ引数を作成または更新します。

 ジョブスクリプトの例：

```
from pyspark.context import SparkContext
        
from awsgluedi.transforms import *
sc = SparkContext()

input_df = spark.createDataFrame(
    [(5,), (0,), (-1,), (2,), (None,)],
    ["source_column"],
)

try:
    df_output = math_functions.IsEven.apply(
        data_frame=input_df,
        spark_context=sc,
        source_column="source_column",
        target_column="target_column",
        value=None,
        true_string="Even",
        false_string="Not even",
    )
    df_output.show()   
except:
    print("Unexpected Error happened ")
    raise
```

 ノートブックを使用したセッションの例 

```
%idle_timeout 2880
%glue_version 4.0
%worker_type G.1X
%number_of_workers 5
%region eu-west-1
```

```
%%configure
{
    "--enable-glue-di-transforms": "true"
}
```

```
from pyspark.context import SparkContext
from awsgluedi.transforms import *

sc = SparkContext()

input_df = spark.createDataFrame(
    [(5,), (0,), (-1,), (2,), (None,)],
    ["source_column"],
)

try:
    df_output = math_functions.IsEven.apply(
        data_frame=input_df,
        spark_context=sc,
        source_column="source_column",
        target_column="target_column",
        value=None,
        true_string="Even",
        false_string="Not even",
    )
    df_output.show()    
except:
    print("Unexpected Error happened ")
    raise
```

 AWS CLI を使用したセッションの例 

```
aws glue create-session --default-arguments "--enable-glue-di-transforms=true"
```

 DI トランスフォーム: 
+  [FlagDuplicatesInColumn class](aws-glue-api-pyspark-transforms-FlagDuplicatesInColumn.md) 
+  [FormatPhoneNumber class](aws-glue-api-pyspark-transforms-FormatPhoneNumber.md) 
+  [FormatCase class](aws-glue-api-pyspark-transforms-FormatCase.md) 
+  [FillWithMode class](aws-glue-api-pyspark-transforms-FillWithMode.md) 
+  [FlagDuplicateRows class](aws-glue-api-pyspark-transforms-FlagDuplicateRows.md) 
+  [RemoveDuplicates class](aws-glue-api-pyspark-transforms-RemoveDuplicates.md) 
+  [MonthName class](aws-glue-api-pyspark-transforms-MonthName.md) 
+  [IsEven クラス](aws-glue-api-pyspark-transforms-IsEven.md) 
+  [CryptographicHash クラス](aws-glue-api-pyspark-transforms-CryptographicHash.md) 
+  [Decrypt クラス](aws-glue-api-pyspark-transforms-Decrypt.md) 
+  [暗号化クラス](aws-glue-api-pyspark-transforms-Encrypt.md) 
+  [IntToIp class](aws-glue-api-pyspark-transforms-IntToIp.md) 
+  [IpToInt class](aws-glue-api-pyspark-transforms-IpToInt.md) 

### Maven: Spark アプリケーションへのプラグインのバンドル
<a name="aws-glue-programming-python-di-transforms-maven"></a>

 Spark アプリケーションをローカルで開発する際、Maven `pom.xml` に変換依存関係を追加することで、Spark アプリケーションと Spark ディストリビューション (バージョン 3.3 ) にプラグインをバンドルできます。

```
<repositories>
   ...
    <repository>
        <id>aws-glue-etl-artifacts</id>
        <url>https://aws-glue-etl-artifacts.s3.amazonaws.com/release/ </url>
    </repository>
</repositories>
...
<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>AWSGlueTransforms</artifactId>
    <version>4.0.0</version>
</dependency>
```

 別の方法として、以下のように AWS Glue Maven アーティファクトからバイナリを直接ダウンロードして、Spark アプリケーションにインクルードすることも可能です。

```
#!/bin/bash
sudo wget -v https://aws-glue-etl-artifacts.s3.amazonaws.com/release/com/amazonaws/AWSGlueTransforms/4.0.0/AWSGlueTransforms-4.0.0.jar -P /usr/lib/spark/jars/
```