

# FlatMap 클래스
<a name="aws-glue-api-crawler-pyspark-transforms-flat-map"></a>

 컬렉션에서 각 `DynamicFrame`에 변환을 적용합니다. 결과는 하나의 `DynamicFrame`으로 병합되지 않고 컬렉션으로 유지됩니다.

## FlatMap 예제
<a name="aws-glue-api-crawler-pyspark-flat-map-examples"></a>

 다음 스니펫 예제에서는 `FlatMap`에 적용할 때 동적 프레임 컬렉션에서 `ResolveChoice` 변환을 사용하는 방법을 보여줍니다. 입력에 사용되는 데이터는 JSON에서 Amazon S3 주소 `s3://bucket/path-for-data/sample.json` 자리 표시자에 있으며, 다음 데이터를 포함합니다.

### 예시 JSON 데이터
<a name="aws-glue-api-crawler-pyspark-flat-map-examples-json"></a>

```
[{
    "firstname": "Arnav",
    "lastname": "Desai",
    "address": {
        "street": "6 Anyroad Avenue",
        "city": "London",
        "state": "England",
        "country": "UK"
    },
    "phone": 17235550101,
    "affiliations": [
        "General Anonymous Example Products",
        "Example Independent Research",
        "Government Department of Examples"
    ]
},
{
    "firstname": "Mary",
    "lastname": "Major",
    "address": {
        "street": "7821 Spot Place",
        "city": "Centerville",
        "state": "OK",
        "country": "US"
    },
    "phone": 19185550023,
    "affiliations": [
        "Example Dot Com",
        "Example Independent Research",
        "Example.io"
    ]
},
{
    "firstname": "Paulo",
    "lastname": "Santos",
    "address": {
        "street": "123 Maple Street",
        "city": "London",
        "state": "Ontario",
        "country": "CA"
    },
    "phone": 12175550181,
    "affiliations": [
        "General Anonymous Example Products",
        "Example Dot Com"
    ]
}]
```

**Example ResolveChoice를 DynamicFrameCollection에 적용하고 출력을 표시합니다.**  

```
#Read DynamicFrame
datasource = glueContext.create_dynamic_frame_from_options("s3", connection_options = {"paths":["s3://bucket/path/to/file/mysamplejson.json"]}, format="json")
datasource.printSchema()
datasource.show()

## Split to create a DynamicFrameCollection
split_frame=datasource.split_fields(["firstname","lastname","address"],"personal_info","business_info")
split_frame.keys()
print("---")

## Use FlatMap to run ResolveChoice
kwargs = {"choice": "cast:string"}
flat = FlatMap.apply(split_frame, ResolveChoice, frame_name="frame", transformation_ctx='tcx', **kwargs)
flat.keys()

##Select one of the DynamicFrames
personal_info = flat.select("personal_info")
personal_info.printSchema()
personal_info.show()
print("---")

business_info = flat.select("business_info")
business_info.printSchema()
business_info.show()
```
 `FlatMap.apply` 직접 호출 시 `frame_name` 파라미터는 **반드시** `"frame"`이어야 합니다. 현재 다른 값은 허용되지 않습니다.

### 출력 예시
<a name="aws-glue-api-crawler-pyspark-flat-map-examples"></a>

```
root
|-- firstname: string
|-- lastname: string
|-- address: struct
|    |-- street: string
|    |-- city: string
|    |-- state: string
|    |-- country: string
|-- phone: long
|-- affiliations: array
|    |-- element: string
---
{
    "firstname": "Mary",
    "lastname": "Major",
    "address": {
        "street": "7821 Spot Place",
        "city": "Centerville",
        "state": "OK",
        "country": "US"
    },
    "phone": 19185550023,
    "affiliations": [
        "Example Dot Com",
        "Example Independent Research",
        "Example.io"
    ]
}

{
    "firstname": "Paulo",
    "lastname": "Santos",
    "address": {
        "street": "123 Maple Street",
        "city": "London",
        "state": "Ontario",
        "country": "CA"
    },
    "phone": 12175550181,
    "affiliations": [
        "General Anonymous Example Products",
        "Example Dot Com"
    ]
}
---
root
|-- firstname: string
|-- lastname: string
|-- address: struct
|    |-- street: string
|    |-- city: string
|    |-- state: string
|    |-- country: string

{
    "firstname": "Mary",
    "lastname": "Major",
    "address": {
        "street": "7821 Spot Place",
        "city": "Centerville",
        "state": "OK",
        "country": "US"
    }
}

{
    "firstname": "Paulo",
    "lastname": "Santos",
    "address": {
        "street": "123 Maple Street",
        "city": "London",
        "state": "Ontario",
        "country": "CA"
    }
}
---
root
|-- phone: long
|-- affiliations: array
|    |-- element: string

{
    "phone": 19185550023,
    "affiliations": [
        "Example Dot Com",
        "Example Independent Research",
        "Example.io"
    ]
}

{
    "phone": 12175550181,
    "affiliations": [
        "General Anonymous Example Products",
        "Example Dot Com"
    ]
}
```

## 메서드
<a name="aws-glue-api-crawler-pyspark-transforms-flat-map-_methods"></a>
+ [\_\_call\_\_](#aws-glue-api-crawler-pyspark-transforms-flat-map-__call__)
+ [Apply](#aws-glue-api-crawler-pyspark-transforms-flat-map-apply)
+ [명칭](#aws-glue-api-crawler-pyspark-transforms-flat-map-name)
+ [describeArgs](#aws-glue-api-crawler-pyspark-transforms-flat-map-describeArgs)
+ [describeReturn](#aws-glue-api-crawler-pyspark-transforms-flat-map-describeReturn)
+ [describeTransform](#aws-glue-api-crawler-pyspark-transforms-flat-map-describeTransform)
+ [describeErrors](#aws-glue-api-crawler-pyspark-transforms-flat-map-describeErrors)
+ [설명](#aws-glue-api-crawler-pyspark-transforms-flat-map-describe)

## \_\_call\_\_(dfc, BaseTransform, frame\_name, transformation\_ctx = "", \*\*base\_kwargs)
<a name="aws-glue-api-crawler-pyspark-transforms-flat-map-__call__"></a>

컬렉션의 각 `DynamicFrame`에 변환을 적용하고 결과를 플랫합니다.
+ `dfc` – 플랫맵할 `DynamicFrameCollection`입니다(필수).
+ `BaseTransform` – `GlueTransform`로부터 얻어진 변환을 사용하여 컬렉션의 각 멤버에게 적용합니다(필수).
+ `frame_name` - 컬렉션의 요소를 전달하기 위한 인수 이름입니다(필수).
+ `transformation_ctx` - 고유 문자열을 통해 상태 정보를 확인합니다(선택 사항).
+ `base_kwargs` - 기본 변환으로 전달을 위한 인수입니다(필수).

`DynamicFrameCollection` 원본의 변환을 각 `DynamicFrame`에 적용하여 생성한 새로운 `DynamicFrameCollection`을 반환합니다.

## apply(cls, \*args, \*\*kwargs)
<a name="aws-glue-api-crawler-pyspark-transforms-flat-map-apply"></a>

`GlueTransform` [apply](aws-glue-api-crawler-pyspark-transforms-GlueTransform.md#aws-glue-api-crawler-pyspark-transforms-GlueTransform-apply)에서 상속됩니다.

## name(cls)
<a name="aws-glue-api-crawler-pyspark-transforms-flat-map-name"></a>

`GlueTransform` [name](aws-glue-api-crawler-pyspark-transforms-GlueTransform.md#aws-glue-api-crawler-pyspark-transforms-GlueTransform-name)에서 상속됩니다.

## describeArgs(cls)
<a name="aws-glue-api-crawler-pyspark-transforms-flat-map-describeArgs"></a>

`GlueTransform` [describeArgs](aws-glue-api-crawler-pyspark-transforms-GlueTransform.md#aws-glue-api-crawler-pyspark-transforms-GlueTransform-describeArgs)에서 상속됩니다.

## describeReturn(cls)
<a name="aws-glue-api-crawler-pyspark-transforms-flat-map-describeReturn"></a>

`GlueTransform` [describeReturn](aws-glue-api-crawler-pyspark-transforms-GlueTransform.md#aws-glue-api-crawler-pyspark-transforms-GlueTransform-describeReturn)에서 상속됩니다.

## describeTransform(cls)
<a name="aws-glue-api-crawler-pyspark-transforms-flat-map-describeTransform"></a>

`GlueTransform` [describeTransform](aws-glue-api-crawler-pyspark-transforms-GlueTransform.md#aws-glue-api-crawler-pyspark-transforms-GlueTransform-describeTransform)에서 상속됩니다.

## describeErrors(cls)
<a name="aws-glue-api-crawler-pyspark-transforms-flat-map-describeErrors"></a>

`GlueTransform` [describeErrors](aws-glue-api-crawler-pyspark-transforms-GlueTransform.md#aws-glue-api-crawler-pyspark-transforms-GlueTransform-describeErrors)에서 상속됩니다.

## describe(cls)
<a name="aws-glue-api-crawler-pyspark-transforms-flat-map-describe"></a>

`GlueTransform` [describe](aws-glue-api-crawler-pyspark-transforms-GlueTransform.md#aws-glue-api-crawler-pyspark-transforms-GlueTransform-describe)에서 상속됩니다.