

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 세분화된 액세스 제어를 AWS Lake Formation 위해에서 EMR Serverless 사용
<a name="emr-serverless-lf-enable"></a>

## 개요
<a name="emr-serverless-lf-enable-overview"></a>

Amazon EMR 릴리스 7.2.0 이상에서는 AWS Lake Formation 를 활용하여 S3에서 지원하는 데이터 카탈로그 테이블에 세분화된 액세스 제어를 적용합니다. 이 기능을 사용하면 Amazon EMR Serverless Spark 작업 내에서 read 쿼리에 대한 테이블, 행, 열 및 셀 수준 액세스 제어를 구성할 수 있습니다. Apache Spark 배치 작업 및 대화형 세션에 대한 세분화된 액세스 제어를 구성하려면 EMR Studio를 사용합니다. Lake Formation 및 EMR Serverless와 함께 사용하는 방법에 대해 자세히 알아보려면 다음 섹션을 참조하세요.

Amazon EMR Serverless를와 함께 사용하면 추가 요금이 AWS Lake Formation 발생합니다. 자세한 내용은 [Amazon EMR 요금](https://aws.amazon.com/emr/pricing/)을 참조하세요.

## EMR Serverless의 작동 방식 AWS Lake Formation
<a name="emr-serverless-lf-enable-how-it-works"></a>

EMR Serverless를 Lake Formation과 함께 사용하면 EMR Serverless에서 작업을 실행하는 경우 Lake Formation 권한 제어를 적용하기 위해 각 Spark 작업에 권한 계층을 적용할 수 있습니다. EMR Serverless는 [Spark 리소스 프로파일](https://spark.apache.org/docs/latest/api/java/org/apache/spark/resource/ResourceProfile.html)을 사용하여 작업을 효과적으로 실행하도록 두 개의 프로파일을 생성합니다. 사용자 프로파일은 사용자 제공 코드를 실행하는 반면, 시스템 프로필은 Lake Formation 정책을 적용합니다. 자세한 내용은 [AWS Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html) 및 [고려 사항 및 제한 사항](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable-considerations.html)을 참조하세요.

Lake Formation에서 사전 초기화된 용량을 사용하는 경우 최소 2개의 Spark 드라이버를 사용하는 것이 좋습니다. Lake Formation이 활성화된 각 작업에는 사용자 프로파일과 시스템 프로파일에 대해 하나씩, 두 개의 Spark 드라이버가 사용됩니다. 최상의 성능을 위해 Lake Formation을 사용하지 않는 경우와 비교하여 Lake Formation 지원 작업에 대해 2배의 드라이버 수를 사용합니다.

EMR Serverless에서 Spark 작업을 실행하는 경우 동적 할당이 리소스 관리 및 클러스터 성능에 미치는 영향도 고려합니다. 리소스 프로파일당 최대 실행기 수의 `spark.dynamicAllocation.maxExecutors` 구성은 사용자 및 시스템 실행기 모두에 적용됩니다. 이 숫자를 허용되는 최대 실행기 수와 같도록 구성하면 사용 가능한 모든 리소스를 사용하는 한 가지 유형의 실행기로 인해 작업 실행이 중단될 수 있으며, 이로 인해 작업 실행 시 다른 실행기가 작동하지 않습니다.

따라서 리소스가 부족하지 않도록 EMR Serverless는 리소스 프로파일당 기본 최대 실행기 수를 `spark.dynamicAllocation.maxExecutors` 값의 90%로 설정합니다. 0에서 1 사이의 값으로 `spark.dynamicAllocation.maxExecutorsRatio`를 지정하는 경우 이 구성을 재정의할 수 있습니다. 또한 리소스 할당 및 전체 성능을 최적화하도록 다음 속성을 구성할 수도 있습니다.
+ `spark.dynamicAllocation.cachedExecutorIdleTimeout`
+ `spark.dynamicAllocation.shuffleTracking.timeout`
+ `spark.cleaner.periodicGC.interval`

다음은 Amazon EMR Serverless가 Lake Formation 보안 정책에 따라 보호되는 데이터에 액세스하는 방법에 대한 개략적인 개요입니다.

![\[Amazon EMR이 Lake Formation 보안 정책으로 보호되는 데이터에 액세스하는 방법\]](http://docs.aws.amazon.com/ko_kr/emr/latest/EMR-Serverless-UserGuide/images/lf-emr-s-architecture.png)


1. 사용자가 Spark 작업을 AWS Lake Formation활성화된 EMR Serverless 애플리케이션에 제출합니다.

1. EMR Serverless는 사용자 드라이버로 작업을 전송하고 사용자 프로파일에서 작업을 실행합니다. 사용자 드라이버는 태스크를 시작하고, 실행기를 요청하며, S3 또는 Glue Catalog에 액세스할 수 없는 린 버전의 Spark를 실행합니다. 작업 계획을 빌드합니다.

1. EMR Serverless는 시스템 드라이버라는 두 번째 드라이버를 설정하고 시스템 프로파일(권한 있는 자격 증명 포함)에서 실행합니다. EMR Serverless는 통신을 위해 두 드라이버 사이에서 암호화된 TLS 채널을 설정합니다. 사용자 드라이버는 채널을 사용하여 작업 계획을 시스템 드라이버로 전송합니다. 시스템 드라이버는 사용자가 제출한 코드를 실행하지 않습니다. 전체 Spark를 실행하고 S3 및 데이터 액세스를 위해 Data Catalog와 통신합니다. 실행기를 요청하고 작업 계획을 일련의 실행 단계로 컴파일합니다.

1. 그런 다음, EMR Serverless는 사용자 드라이버 또는 시스템 드라이버를 사용하여 실행기에서 단계를 실행합니다. 모든 단계의 사용자 코드는 사용자 프로파일 실행기에서만 실행됩니다.

1. 로 보호되는 데이터 카탈로그 테이블에서 데이터를 읽 AWS Lake Formation 거나 보안 필터를 적용하는 단계는 시스템 실행기에 위임됩니다.

## Amazon EMR에서 Lake Formation 활성화
<a name="emr-serverless-lf-enable-config"></a>

Lake Formation을 활성화하려면 [EMR Serverless 애플리케이션을 생성](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html#gs-application-console)할 때 런타임 구성 파라미터의 `spark-defaults` 분류 아래에서 `spark.emr-serverless.lakeformation.enabled`를 `true`로 설정합니다.

```
aws emr-serverless create-application \
    --release-label emr-7.12.0 \
    --runtime-configuration '{
     "classification": "spark-defaults", 
     "properties": {
      "spark.emr-serverless.lakeformation.enabled": "true"
      }
    }' \
    --type "SPARK"
```

EMR Studio에서 새 애플리케이션을 생성하는 경우 Lake Formation을 활성화할 수도 있습니다. **추가 구성** 아래에서 사용할 수 있는 **세분화된 액세스 제어를 위해 Lake Formation 사용**을 선택합니다.

Lake Formation을 EMR Serverless와 함께 사용하면 [워커 간 암호화](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/interworker-encryption.html)가 기본적으로 활성화되므로 워커 간 암호화를 다시 명시적으로 활성화하지 않아도 됩니다.

**Spark 작업에 대해 Lake Formation 활성화**

개별 Spark 작업에 대해 Lake Formation을 활성화하려면 `spark-submit`을 사용할 때 `spark.emr-serverless.lakeformation.enabled`를 true로 설정합니다.

```
--conf spark.emr-serverless.lakeformation.enabled=true
```

## 작업 런타임 역할 IAM 권한
<a name="emr-serverless-lf-enable-permissions"></a>

Lake Formation 권한은 AWS Glue 데이터 카탈로그 리소스, Amazon S3 위치 및 해당 위치의 기본 데이터에 대한 액세스를 제어합니다. IAM 권한은 Lake Formation 및 AWS Glue API와 리소스에 대한 액세스를 제어합니다. Data Catalog의 테이블에 액세스할 수 있는 Lake Formation 권한이 있더라도(SELECT) `glue:Get*` API 작업에 IAM 권한이 없으면 작업이 실패합니다.

다음은 S3의 스크립트에 액세스할 수 있는 IAM 권한을 제공하는 방법, S3에 로그 업로드, AWS Glue API 권한 및 Lake Formation에 액세스할 수 있는 권한에 대한 정책 예제입니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ScriptAccess",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::*.amzn-s3-demo-bucket/scripts",
        "arn:aws:s3:::*.amzn-s3-demo-bucket/*"
      ]
    },
    {
      "Sid": "LoggingAccess",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::amzn-s3-demo-bucket/logs/*"
      ]
    },
    {
      "Sid": "GlueCatalogAccess",
      "Effect": "Allow",
      "Action": [
        "glue:Get*",
        "glue:Create*",
        "glue:Update*"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "LakeFormationAccess",
      "Effect": "Allow",
      "Action": [
        "lakeformation:GetDataAccess"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

## 작업 런타임 역할에 대한 Lake Formation 권한 설정
<a name="emr-serverless-lf-enable-set-up-grants-for-role"></a>

먼저 Lake Formation에 Hive 테이블의 위치를 등록합니다. 그런 다음, 원하는 테이블에서 작업 런타임 역할에 대한 권한을 생성합니다. Lake Formation에 대한 자세한 내용은 *AWS Lake Formation 개발자 안내서*의 [ What is AWS Lake Formation?](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html)를 참조하세요.

Lake Formation 권한을 설정한 후 Amazon EMR Serverless에서 Spark 작업을 제출할 수 있습니다. Spark 작업에 대한 자세한 내용은 [Spark 예제](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/jobs-spark.html#spark-examples)를 참조하세요.

## 작업 실행 제출
<a name="emr-serverless-lf-enable-submit-job"></a>

Lake Formation 권한 부여 설정을 완료한 후 [EMR Serverless에서 Spark 작업을 제출](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/jobs-spark.html#spark-examples)할 수 있습니다. 다음 섹션에서는 작업 실행 속성을 구성 및 제출하는 방법의 예를 보여줍니다.

## 권한 요구 사항
<a name="emr-serverless-lf-enable-otf-permissions"></a>

### 에 등록되지 않은 테이블 AWS Lake Formation
<a name="emr-s-lf-otf-permissions"></a>

에 등록되지 않은 테이블 AWS Lake Formation의 경우 작업 런타임 역할은 AWS Glue 데이터 카탈로그와 Amazon S3의 기본 테이블 데이터에 모두 액세스합니다. 이렇게 AWS 하려면 작업 런타임 역할에 Glue 및 Amazon S3 작업 모두에 대한 적절한 IAM 권한이 있어야 합니다.

### 에 등록된 테이블 AWS Lake Formation
<a name="emr-s-lf-otf-permissions-tables-lf-registered"></a>

에 등록된 테이블 AWS Lake Formation의 경우 작업 런타임 역할은 AWS Glue 데이터 카탈로그 메타데이터에 액세스하고 Lake Formation에서 제공하는 임시 자격 증명은 Amazon S3의 기본 테이블 데이터에 액세스합니다. 작업을 실행하는 데 필요한 Lake Formation 권한은 Spark 작업이 시작하는 AWS Glue 데이터 카탈로그 및 Amazon S3 API 호출에 따라 달라지며 다음과 같이 요약할 수 있습니다.
+ **DESCRIBE** 권한을 사용하면 런타임 역할이 데이터 카탈로그에서 테이블 또는 데이터베이스 메타데이터를 읽을 수 있습니다.
+ **ALTER** 권한은 런타임 역할이 데이터 카탈로그의 테이블 또는 데이터베이스 메타데이터를 수정할 수 있도록 허용합니다.
+ **DROP** 권한을 사용하면 런타임 역할이 데이터 카탈로그에서 테이블 또는 데이터베이스 메타데이터를 삭제할 수 있습니다.
+ **SELECT** 권한은 런타임 역할이 Amazon S3에서 테이블 데이터를 읽을 수 있도록 허용합니다.
+ **INSERT** 권한은 런타임 역할이 Amazon S3에 테이블 데이터를 쓸 수 있도록 허용합니다.
+ **DELETE** 권한은 런타임 역할이 Amazon S3에서 테이블 데이터를 삭제할 수 있도록 허용합니다.
**참고**  
Lake Formation은 Spark 작업이 AWS Glue를 호출하여 테이블 메타데이터를 검색하고 Amazon S3를 호출하여 테이블 데이터를 검색할 때 권한을 느리게 평가합니다. 권한이 부족한 런타임 역할을 사용하는 작업은 Spark가 누락된 권한이 필요한 AWS Glue 또는 Amazon S3를 호출할 때까지 실패하지 않습니다.

**참고**  
다음 지원되는 테이블 매트릭스에서:   
**Supported**로 표시된 작업은 Lake Formation 자격 증명만 사용하여 Lake Formation에 등록된 테이블의 테이블 데이터에 액세스합니다. Lake Formation 권한이 충분하지 않은 경우 작업은 런타임 역할 자격 증명으로 돌아가지 않습니다. Lake Formation에 등록되지 않은 테이블의 경우 작업 런타임 역할 자격 증명이 테이블 데이터에 액세스합니다.
**Amazon S3 위치에서 지원되는 IAM 권한**으로 표시된 작업은 Lake Formation 자격 증명을 사용하여 Amazon S3의 기본 테이블 데이터에 액세스하지 않습니다. 이러한 작업을 실행하려면 테이블이 Lake Formation에 등록되어 있는지 여부에 관계없이 작업 런타임 역할에 테이블 데이터에 액세스하는 데 필요한 Amazon S3 IAM 권한이 있어야 합니다.

------
#### [ Hive ]

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable.html)

------
#### [ Iceberg ]

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable.html)

**Iceberg의 Spark 구성:** 다음 샘플은 Iceberg를 사용하여 Spark를 구성하는 방법을 보여줍니다. Iceberg 작업을 실행하려면 다음 `spark-submit` 속성을 제공합니다.

```
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog
--conf spark.sql.catalog.spark_catalog.warehouse=<S3_DATA_LOCATION>
--conf spark.sql.catalog.spark_catalog.glue.account-id=<ACCOUNT_ID>
--conf spark.sql.catalog.spark_catalog.client.region=<REGION>
--conf spark.sql.catalog.spark_catalog.glue.endpoint=https://glue.<REGION>.amazonaws.com
```

------
#### [ Hudi ]

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable.html)

다음 샘플은 파일 위치 및 사용에 필요한 기타 속성을 지정하여 Hudi로 Spark를 구성하는 예제입니다.

**Hudi를 위한 Spark 구성:** 노트북에서 사용할 때 이 코드 조각은 Spark에서 Hudi 기능을 활성화하는 Hudi Spark 번들 JAR 파일의 경로를 지정합니다. 또한 Glue 데이터 카탈로그를 AWS 메타스토어로 사용하도록 Spark를 구성합니다.

```
%%configure -f
{
    "conf": {
        "spark.jars": "/usr/lib/hudi/hudi-spark-bundle.jar",
        "spark.hadoop.hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory",
        "spark.serializer": "org.apache.spark.serializer.JavaSerializer",
        "spark.sql.catalog.spark_catalog": "org.apache.spark.sql.hudi.catalog.HoodieCatalog",
        "spark.sql.extensions": "org.apache.spark.sql.hudi.HoodieSparkSessionExtension"
    }
}
```

** AWS Glue를 사용하는 Hudi용 Spark 구성:** 노트북에서 사용되는 경우이 코드 조각은 Hudi를 지원되는 데이터 레이크 형식으로 활성화하고 Hudi 라이브러리 및 종속성을 사용할 수 있도록 합니다.

```
%%configure
{
    "--conf": "spark.serializer=org.apache.spark.serializer.JavaSerializer --conf 
spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog --conf 
spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension",
    "--datalake-formats": "hudi",
    "--enable-glue-datacatalog": True,
    "--enable-lakeformation-fine-grained-access": "true"
}
```

------
#### [ Delta Lake ]

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/EMR-Serverless-UserGuide/emr-serverless-lf-enable.html)

**Delta Lake를 사용하는 EMR Serverless:** EMR Serverless에서 Delta Lake를 Lake Formation과 함께 사용하려면 다음 명령을 실행합니다.

```
spark-sql \
  --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension,com.amazonaws.emr.recordserver.connector.spark.sql.RecordServerSQLExtension \
  --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog \
```

------

# 디버깅 작업
<a name="emr-serverless-lf-enable-debugging"></a>

**참고**  
이 기능을 사용하면 필터링되지 않은 민감한 정보가 포함될 수 있는 시스템 프로파일 워커의 **stdout** 및 **stderr** 로그에 액세스할 수 있습니다. 다음 권한은 비프로덕션 데이터에 액세스하는 데만 사용합니다. 프로덕션 작업에 사용하기 위해 생성된 애플리케이션의 경우 데이터 액세스 권한이 높은 관리자 또는 사용자에게만 이러한 권한을 추가하는 것이 좋습니다.

EMR-7.3.0 이상에서는 EMR Serverless를 통해 Lake Formation 지원 배치 작업에 대한 자체 디버깅 기능을 사용할 수 있습니다. 이를 위해서는 [GetDashboardForJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_GetDashboardForJobRun.html) API에서 새 파라미터 **accessSystemProfileLogs**를 사용합니다. **accessSystemProfileLogs**가 **true**로 설정된 경우 Lake Formation 지원 EMR Serverless 배치 작업을 디버깅하는 데 사용할 수 있는 시스템 프로파일 워커의 **stdout** 및 **stderr** 로그에 액세스할 수 있습니다.

```
aws emr-serverless get-dashboard-for-job-run \
  --application-id application-id
  --job-run-id job-run-id
  --access-system-profile-logs
```

## 필수 권한
<a name="emr-serverless-lf-enable-debugging-perms"></a>

**GetDashboardForJobRun**을 사용하여 Lake Formation 지원 배치 작업을 디버깅하려는 보안 주체에는 반드시 다음 추가 권한이 있어야 합니다.

```
{
    "Sid": "AccessSystemProfileLogs",
    "Effect": "Allow",
    "Action": [
        "emr-serverless:GetDashboardForJobRun",
        "emr-serverless:AccessSystemProfileLogs",
        "glue:GetDatabases",
        "glue:SearchTables"
    ],
    "Resource": [
        "arn:aws:emr-serverless:region:account-id:/applications/applicationId/jobruns/jobid",
        "arn:aws:glue:region:account-id:catalog",
        "arn:aws:glue:region:account-id:database/*",
        "arn:aws:glue:region:account-id:table/*/*"
    ]
}
```

## 고려 사항
<a name="emr-serverless-lf-enable-debugging-considerations"></a>

디버깅용 시스템 프로파일 로그는 작업과 동일한 계정 내 Lake Formation의 데이터베이스 또는 테이블에 액세스하는 작업에 대해 확인할 수 있습니다. 다음 시나리오의 경우 표시되지 않습니다.
+ Lake Formation 권한을 사용하여 관리되는 Data Catalog에 교차 계정 데이터베이스 및 테이블이 있는 경우
+ Lake Formation 권한을 사용하여 관리되는 Data Catalog에 리소스 링크가 있는 경우

# Glue Data Catalog 뷰 작업
<a name="SECTION-jobs-glue-data-catalog-views"></a>

EMR Serverless와 함께 사용할 수 있도록 AWS Glue 데이터 카탈로그에서 뷰를 생성하고 관리할 수 있습니다. 일반적으로 AWS Glue 데이터 카탈로그 뷰라고 합니다. 이러한 뷰는 여러 SQL 쿼리 엔진을 지원하므로 EMR Serverless Amazon Athena및 Amazon Redshift와 같은 다양한 AWS 서비스에서 동일한 뷰에 액세스할 수 있으므로 유용합니다.

데이터 카탈로그에서 뷰를 생성하여에서 리소스 권한 부여 및 태그 기반 액세스 제어를 사용하여 액세스 권한을 AWS Lake Formation 부여합니다. 이 액세스 제어 방법을 사용하면 보기를 생성할 때 참조한 테이블에 대한 추가 액세스를 구성하지 않아도 됩니다. 이러한 권한 부여 방법을 정의자 시맨틱이라고 하며 이러한 보기를 정의자 보기라고 합니다. Lake Formation의 액세스 제어에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 [데이터 카탈로그 리소스에 대한 권한 부여 및 취소](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-catalog-permissions.html)를 참조하세요.

Data Catalog 보기는 다음 사용 사례에 유용합니다.
+ **세분화된 액세스 제어** - 사용자에게 필요한 권한에 따라 데이터 액세스를 제한하는 뷰를 생성할 수 있습니다. 예를 들어, 데이터 카탈로그의 뷰를 사용하여 인사 관리(HR) 부서 소속이 아닌 직원은 개인 식별 정보(PII)를 보지 못하게 할 수 있습니다.
+ **완전한 정의 완료** - Data Catalog의 뷰에 필터를 적용하면 데이터 카탈로그의 뷰에서 사용할 수 있는 데이터 레코드가 항상 완전한지 확인할 수 있습니다.
+ **향상된 보안** - 보기를 생성하는 데 사용되는 쿼리 정의를 완료합니다. 이러한 이점은 데이터 카탈로그의 보기가 악의적 액터의 SQL 명령에 영향을 받지 않는다는 것을 의미합니다.
+ **간단한 데이터 공유** - 데이터를 이동하지 않고 다른 AWS 계정과 데이터를 공유합니다. 자세한 내용은 [Cross-account data sharing in Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/cross-account-permissions.html)을 참조하세요.

## Data Catalog 뷰 생성
<a name="SECTION-jobs-glue-data-catalog-views-create"></a>

Data Catalog 뷰는 다양한 방법으로 생성할 수 있습니다. 여기에는 AWS CLI 또는 Spark SQL 사용이 포함됩니다. 몇 가지 예는 다음과 같습니다.

------
#### [ Using SQL ]

다음은 Data Catalog 뷰를 생성하기 위한 구문을 보여줍니다. `MULTI DIALECT` 뷰 유형을 기록합니다. 이 작업을 수행하면 데이터 카탈로그 보기가 다른 보기와 구별됩니다. `SECURITY` 조건자는 `DEFINER`로 지정됩니다. 이는 `DEFINER` 의미 체계가 있는 Data Catalog 뷰를 나타냅니다.

```
CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW [IF NOT EXISTS] view_name
[(column_name [COMMENT column_comment], ...) ]
[ COMMENT view_comment ]
[TBLPROPERTIES (property_name = property_value, ... )]
SECURITY DEFINER
AS query;
```

다음은 구문을 따르는 샘플 `CREATE` 문입니다.

```
CREATE PROTECTED MULTI DIALECT VIEW catalog_view
SECURITY DEFINER
AS
SELECT order_date, sum(totalprice) AS price
FROM source_table
GROUP BY order_date
```

또한 SQL을 사용하여 테스트 실행 모드에서 뷰를 만들어 실제로 리소스를 생성하지 않고도 뷰 생성을 테스트할 수 있습니다. 이 옵션을 사용하면 입력을 검증하는 "드라이 런"이 생성되고 검증이 성공하면 뷰를 나타내는 AWS Glue 테이블 객체의 JSON이 반환됩니다. 이 경우 실제 뷰는 생성되지 않습니다.

```
CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEW view_name
SECURITY DEFINER 
[ SHOW VIEW JSON ]
AS view-sql
```

------
#### [ Using the AWS CLI ]

**참고**  
CLI 명령을 사용하는 경우 뷰 생성에 사용된 SQL은 구문 분석되지 않습니다. 이로 인해 뷰는 생성되었지만, 쿼리가 성공하지 못하는 경우가 발생할 수 있습니다. 뷰를 생성하기 전에 SQL 구문을 테스트합니다.

다음 CLI 명령을 사용하여 뷰를 만듭니다.

```
aws glue create-table --cli-input-json '{
  "DatabaseName": "database",
  "TableInput": {
    "Name": "view",
    "StorageDescriptor": {
      "Columns": [
        {
          "Name": "col1",
          "Type": "data-type"
        },
        ...
        {
          "Name": "col_n",
          "Type": "data-type"
        }
      ],
      "SerdeInfo": {}
    },
    "ViewDefinition": {
      "SubObjects": [
        "arn:aws:glue:aws-region:aws-account-id:table/database/referenced-table1",
        ...
        "arn:aws:glue:aws-region:aws-account-id:table/database/referenced-tableN",
       ],
      "IsProtected": true,
      "Representations": [
        {
          "Dialect": "SPARK",
          "DialectVersion": "1.0",
          "ViewOriginalText": "Spark-SQL",
          "ViewExpandedText": "Spark-SQL"
        }
      ]
    }
  }
}'
```

------

## 지원되는 뷰 작업
<a name="SECTION-jobs-glue-data-catalog-views-supported-operations"></a>

다음 명령 조각은 Data Catalog 뷰를 사용하는 다양한 방법을 보여줍니다.
+ **CREATE VIEW**

  Data Catalog 뷰를 생성합니다. 다음은 기존 테이블에서 뷰를 생성하는 방법을 보여주는 샘플입니다.

  ```
  CREATE PROTECTED MULTI DIALECT VIEW catalog_view 
  SECURITY DEFINER AS SELECT * FROM my_catalog.my_database.source_table
  ```
+ **ALTER VIEW**

  사용 가능한 구문:
  + `ALTER VIEW view_name [FORCE] ADD DIALECT AS query`
  + `ALTER VIEW view_name [FORCE] UPDATE DIALECT AS query`
  + `ALTER VIEW view_name DROP DIALECT`

  `FORCE ADD DIALECT` 옵션을 사용하여 새 엔진 언어에 따라 스키마 및 하위 객체를 강제 업데이트할 수 있습니다. `FORCE`를 사용하여 다른 엔진 언어를 업데이트하지 않아도 이로 인해 쿼리 오류가 발생할 수 있습니다. 이와 관련한 샘플은 다음과 같습니다.

  ```
  ALTER VIEW catalog_view FORCE ADD DIALECT
  AS
  SELECT order_date, sum(totalprice) AS price
  FROM source_table
  GROUP BY orderdate;
  ```

  다음은 언어를 업데이트하기 위해 뷰를 변경하는 방법을 보여줍니다.

  ```
  ALTER VIEW catalog_view UPDATE DIALECT AS 
  SELECT count(*) FROM my_catalog.my_database.source_table;
  ```
+ **DESCRIBE VIEW**

  뷰를 설명하는 데 사용할 수 있는 구문:
  + `SHOW COLUMNS {FROM|IN} view_name [{FROM|IN} database_name]` - 사용자에게 뷰를 설명하는 데 필요한 AWS Glue 및 Lake Formation 권한이 있는 경우 열을 나열할 수 있습니다. 다음은 열을 표시하기 위한 몇 가지 샘플 명령입니다.

    ```
    SHOW COLUMNS FROM my_database.source_table;    
    SHOW COLUMNS IN my_database.source_table;
    ```
  + `DESCRIBE view_name` - 사용자에게 뷰를 설명하는 데 필요한 AWS Glue 및 Lake Formation 권한이 있는 경우 메타데이터와 함께 뷰의 열을 나열할 수 있습니다.
+ **DROP VIEW**

  사용 가능한 구문:
  + `DROP VIEW [ IF EXISTS ] view_name`

    다음 샘플은 삭제 전에 뷰가 존재하는지 테스트하는 `DROP` 문을 보여줍니다.

    ```
    DROP VIEW IF EXISTS catalog_view;
    ```
+ **보기 생성 표시**
  + `SHOW CREATE VIEW view_name` - 지정된 뷰를 생성하는 SQL 문을 보여줍니다. 다음은 Data Catalog 뷰 생성을 보여주는 샘플입니다.

    ```
    SHOW CREATE TABLE my_database.catalog_view;
    CREATE PROTECTED MULTI DIALECT VIEW my_catalog.my_database.catalog_view (
      net_profit,
      customer_id,
      item_id,
      sold_date)
    TBLPROPERTIES (
      'transient_lastDdlTime' = '1736267222')
    SECURITY DEFINER AS SELECT * FROM
    my_database.store_sales_partitioned_lf WHERE customer_id IN (SELECT customer_id from source_table limit 10)
    ```
+ **SHOW VIEWS**

  일반 뷰, 다중 언어 뷰(MDV) 및 Spark 언어가 없는 MDV와 같은 카탈로그의 모든 뷰를 나열합니다. 사용 가능한 구문은 다음과 같습니다.
  + `SHOW VIEWS [{ FROM | IN } database_name] [LIKE regex_pattern]`:

    다음은 뷰를 표시하는 샘플 명령입니다.

    ```
    SHOW VIEWS IN marketing_analytics LIKE 'catalog_view*';
    ```

데이터 카탈로그 뷰 생성 및 구성에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 [AWS Glue 데이터 카탈로그 뷰 구축](https://docs.aws.amazon.com/lake-formation/latest/dg/working-with-views.html)을 참조하세요.

## Data Catalog 뷰 쿼리
<a name="SECTION-jobs-glue-data-catalog-views-querying"></a>

 데이터 카탈로그 보기를 생성한 후 AWS Lake Formation 세분화된 액세스 제어가 활성화된 Amazon EMR Serverless Spark 작업을 사용하여 쿼리할 수 있습니다. 작업 런타임 역할에는 Data Catalog 뷰에 대한 Lake Formation `SELECT` 권한이 있어야 합니다. 뷰에서 참조된 기본 테이블에 대한 액세스 권한을 부여하지 않아도 됩니다.

모든 설정을 마치면 보기를 쿼리할 수 있습니다. 예를 들어, EMR Studio에서 EMR Serverless 애플리케이션을 생성한 후 다음 쿼리를 실행하여 뷰에 액세스합니다.

```
SELECT * from my_database.catalog_view LIMIT 10;
```

유용한 함수는 `invoker_principal`입니다. 이 함수는 EMRS 작업 런타임 역할의 고유 식별자를 반환합니다. 이 함수는 호출 보안 주체에 따라 뷰 출력을 제어하는 용도로 사용할 수 있습니다. 이 함수를 사용하여 호출 역할에 따라 쿼리 결과를 구체화하는 조건을 뷰에 추가할 수 있습니다. 이 함수를 사용하려면 작업 런타임 역할에 `LakeFormation:GetDataLakePrincipal` IAM 작업 권한이 있어야 합니다.

```
select invoker_principal();
```

예를 들어, 이 함수를 `WHERE` 절에 추가하여 쿼리 결과를 구체화할 수 있습니다.

## 고려 사항 및 제한 사항
<a name="SECTION-jobs-glue-data-catalog-views-considerations"></a>

Data Catalog 뷰를 생성할 때 적용되는 사항은 다음과 같습니다.
+ Amazon EMR 7.6 이상에서 Data Catalog 뷰만 생성할 수 있습니다.
+ Data Catalog 뷰를 정의하는 사용자에는 뷰에서 액세스하는 기본 테이블에 대해 `SELECT` 액세스 권한이 있어야 합니다. 특정 기본 테이블의 정의자 역할에 Lake Formation 필터가 적용된 경우 Data Catalog 뷰 생성에 실패합니다.
+ 기본 테이블에는 Lake Formation의 `IAMAllowedPrincipals` 데이터 레이크 권한이 없어야 합니다. 이 권한이 있는 경우 *다중 언어 뷰는 IAMAllowedPrincipals 권한이 없는 테이블만 참조*라는 오류가 발생할 수 있습니다.
+ 테이블의 Amazon S3 위치를 Lake Formation 데이터 레이크 위치로 등록해야 합니다. 테이블이 등록되지 않은 경우 *다중 언어 뷰는 Lake Formation 관리형 테이블만 참조* 오류가 발생할 수 있습니다. Lake Formation에 Amazon S3 위치를 등록하는 방법에 대한 자세한 내용은 AWS Lake Formation 개발자 안내서의 [ Amazon S3 위치 등록](https://docs.aws.amazon.com/lake-formation/latest/dg/register-location.html)을 참조하세요.
+ `PROTECTED` Data Catalog 보기만 생성할 수 있습니다. `UNPROTECTED` 보기는 지원되지 않습니다.
+ 데이터 카탈로그 보기 정의에서 다른 AWS 계정의 테이블을 참조할 수 없습니다. 또한 별도의 리전에 있는 동일한 계정의 테이블을 참조할 수 없습니다.
+ 계정 또는 리전 간에 데이터를 공유하려면 리소스 링크를 사용하여 전체 뷰를 계정 및 리전 간에 공유합니다.
+ 사용자 정의 함수(UDF)는 지원되지 않습니다.
+ Iceberg 테이블 기반 뷰를 사용할 수 있습니다. 오픈 테이블 형식의 Apache Hudi 및 Delta Lake도 지원됩니다.
+ Data Catalog 보기는 다른 보기를 참조할 수 없습니다.
+  AWS Glue Data Catalog 뷰 스키마는 항상 소문자를 사용하여 저장됩니다. 예를 들어, DDL 문을 사용하여 `Castle`이라는 열을 만드는 경우 생성된 열은 `castle`과 같이 소문자로 표시됩니다. 그런 다음 DML 쿼리의 열 이름을 `Castle` 또는 `CASTLE`로 지정하면 EMR Spark는 쿼리를 실행할 이름을 소문자로 만듭니다. 하지만 열 머리글은 쿼리에서 지정한 대소문자를 사용하여 표시됩니다.

  DML 쿼리에 지정된 열 이름이 Glue Data Catalog의 열 이름과 일치하지 않는 경우 쿼리가 실패하도록 하려면 `spark.sql.caseSensitive=true`를 설정합니다.

# 오픈 테이블 형식 지원
<a name="emr-serverless-lf-enable-open-table-format-support"></a>

EMR Serverless는 Apache Hive, Apache Iceberg, Delta Lake(7.6.0 이상) 및 Apache Hudi(7.6.0 이상)에서 SELECT 쿼리를 지원합니다. EMR 7.12부터 Lake Formation 벤딩 자격 증명을 사용하여 Apache Hive, Apache Iceberg 및 Delta Lake 테이블에 대해 테이블 데이터를 수정하는 DML 및 DDL 작업이 지원됩니다.

# 고려 사항 및 제한 사항
<a name="emr-serverless-lf-enable-considerations"></a>

## 일반
<a name="emr-s-lf-considerations"></a>

EMR Serverless에서 Lake Formation을 사용할 때 다음 제한 사항을 검토합니다.

**참고**  
EMR Serverless에서 Spark 작업에 대해 Lake Formation을 활성화하면 작업이 시스템 드라이버 및 사용자 드라이버를 시작합니다. 시작 시 사전 초기화된 용량을 지정한 경우 드라이버는 사전 초기화된 용량부터 프로비저닝하고 시스템 드라이버 수는 사용자가 지정한 사용자 드라이버 수와 같습니다. 온디맨드 용량을 선택하면 EMR Serverless는 사용자 드라이버 외에도 시스템 드라이버를 시작합니다. Lake Formation 작업을 사용하는 EMR Serverless와 관련된 비용을 예측하려면 [AWS Pricing Calculator](https://calculator.aws/#/addService/EMR)를 사용합니다.
+ Lake Formation을 사용하는 Amazon EMR Serverless는 지원되는 모든 [EMR Serverless 리전](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/considerations.html)에서 사용할 수 있습니다.
+ Lake Formation 지원 애플리케이션은 [사용자 지정 EMR Serverless 이미지](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/application-custom-image.html) 사용을 지원하지 않습니다.
+ Lake Formation 작업의 경우 `DynamicResourceAllocation`을 끌 수 없습니다.
+ Spark 작업에서 Lake Formation만 사용할 수 있습니다.
+ Lake Formation을 사용하는 EMR Serverless는 작업 전체에서 단일 Spark 세션만 지원합니다.
+ Lake Formation을 사용하는 EMR Serverless는 리소스 링크를 통해 공유되는 교차 계정 테이블 쿼리만 지원합니다.
+ 다음은 지원되지 않습니다.
  + 복원력 있는 분산 데이터세트(RDD)
  + Spark 스트리밍
  + 중첩된 열에 대한 액세스 제어
+ EMR Serverless는 다음을 포함하여 시스템 드라이버의 완전한 격리를 저해할 수 있는 기능을 차단합니다.
  + UDT, HiveUDF 및 사용자 지정 클래스가 포함된 사용자 정의 함수
  + 사용자 지정 데이터 소스
  + Spark 확장, 커넥터 또는 메타스토어에 대한 추가 jar 제공
  + `ANALYZE TABLE` 명령
+ EMR Serverless 애플리케이션이 Amazon S3용 VPC 엔드포인트가 있는 프라이빗 서브넷에 있고 엔드포인트 정책을 연결하여 액세스를 제어하는 경우 작업이 AWS 관리형 Amazon S3로 로그 데이터를 전송하기 전에 [logging.html#jobs-log-storage-managed-storage](logging.html#jobs-log-storage-managed-storage) VPC 정책에 자세히 설명된 권한을 S3 게이트웨이 엔드포인트에 포함합니다. 요청 문제 해결은 AWS 지원팀에 문의하세요.
+ Amazon EMR 7.9.0부터 Spark FGAC는 s3a:// 스키마와 함께 사용할 때 S3AFileSystem을 지원합니다.
+ Amazon EMR 7.11은 CTAS를 사용하여 관리형 테이블 생성을 지원합니다.
+ Amazon EMR 7.12는 CTAS를 사용하여 관리형 및 외부 테이블 생성을 지원합니다.

## 권한
<a name="emr-s-lf-reads-writes"></a>
+ 액세스 제어를 적용하기 위해 EXPLAIN PLAN 및 DESCRIBE TABLE과 같은 DDL 작업은 제한된 정보를 노출하지 않습니다.
+ Lake Formation에 테이블 위치를 등록하면 데이터 액세스는 EMR Serverless 작업 런타임 역할의 IAM 권한 대신 Lake Formation에 저장된 자격 증명을 사용합니다. 런타임 역할에 해당 위치에 대한 S3 IAM 권한이 있더라도 테이블 위치에 등록된 역할이 잘못 구성된 경우 작업이 실패합니다.
+ Amazon EMR 7.12부터 추가 모드에서 Lake Formation 자격 증명과 함께 DataFrameWriter(V2)를 사용하여 기존 Hive 및 Iceberg 테이블에 쓸 수 있습니다. 덮어쓰기 작업의 경우 또는 새 테이블을 생성할 때 EMR은 런타임 역할 자격 증명을 사용하여 테이블 데이터를 수정합니다.
+ 뷰 또는 캐시된 테이블을 소스 데이터로 사용할 때 다음 제한 사항이 적용됩니다(이러한 제한 사항은 AWS Glue Data Catalog 뷰에는 적용되지 않음).
  + MERGE, DELETE 및 UPDATE 작업의 경우
    + 지원됨: 뷰 및 캐시된 테이블을 소스 테이블로 사용합니다.
    + 지원되지 않음: 할당 및 조건 절에서 뷰 및 캐시된 테이블 사용.
  + CREATE OR REPLACE 및 REPLACE TABLE AS SELECT 작업의 경우:
    + 지원되지 않음: 뷰 및 캐시된 테이블을 소스 테이블로 사용.
+ 소스 데이터에 UDFs 있는 Delta Lake 테이블은 삭제 벡터가 활성화된 경우에만 MERGE, DELETE 및 UPDATE 작업을 지원합니다.

## 로그 및 디버깅
<a name="emr-s-lf-debug-logs"></a>
+ EMR Serverless는 Lake Formation 지원 애플리케이션의 시스템 드라이버 Spark 로그에 대한 액세스를 제한합니다. 시스템 드라이버는 관리자 권한으로 실행되므로 시스템 드라이버가 생성하는 이벤트 및 로그에는 민감한 정보가 포함될 수 있습니다. 권한이 없는 사용자 또는 코드가 이 민감한 데이터에 액세스하지 못하도록 EMR Serverless는 시스템 드라이버 로그에 대한 액세스를 비활성화했습니다.
+ 시스템 프로파일 로그는 항상 관리형 스토리지에 유지되며, 이는 비활성화할 수 없는 필수 설정입니다. 이러한 로그는 고객 관리형 KMS 키 또는 AWS 관리형 KMS 키를 사용하여 안전하게 저장되고 암호화됩니다.

## Iceberg
<a name="emr-s-lf-iceberg"></a>

Apache Iceberg를 사용할 때 다음 고려 사항을 검토합니다.
+ Apache Iceberg는 세션 카탈로그에서만 사용할 수 있으며, 임의로 이름이 지정된 카탈로그에서는 사용할 수 없습니다.
+ Lake Formation에 등록된 Iceberg 테이블은 메타데이터 테이블 `history`, `metadata_log_entries`, `snapshots`, `files`, `manifests`, `refs`만 지원합니다. Amazon EMR은 `partitions`, `path`, `summaries`와 같이 민감한 데이터를 포함할 수 있는 열을 숨깁니다. 이 제한 사항은 Lake Formation에 등록되지 않은 Iceberg 테이블에 적용되지 않습니다.
+ Lake Formation에 등록되지 않은 테이블은 모든 Iceberg 저장 프로시저를 지원합니다. `register_table` 및 `migrate` 절차는 어떤 테이블에서도 지원되지 않습니다.
+ V1 대신 Iceberg DataFrameWriterV2를 사용하는 것이 좋습니다.

# 문제 해결
<a name="emr-serverless-lf-troubleshooting"></a>

문제 해결 방법은 다음 섹션을 참조하세요.

## 로깅
<a name="emr-serverless-lf-troubleshooting-logging"></a>

EMR Serverless는 Spark 리소스 프로파일을 사용하여 작업 실행을 분할합니다. EMR Serverless는 사용자 프로파일을 사용하여 사용자가 제공한 코드를 실행하는 반면, 시스템 프로필은 Lake Formation 정책을 적용합니다. 사용자 프로파일로 실행된 태스크의 로그에 액세스할 수 있습니다.

Lake Formation 지원 작업 디버깅에 대한 자세한 내용은 [디버깅 작업](emr-serverless-lf-enable-debugging.html)을 참조하세요.

## Live UI 및 Spark 기록 서버
<a name="emr-serverless-lf-troubleshooting-live-ui"></a>

Live UI 및 Spark 기록 서버에는 사용자 프로파일에서 생성된 모든 Spark 이벤트 및 시스템 드라이버에서 생성된 수정된 이벤트가 있습니다.

**실행기** 탭에서 사용자 및 시스템 드라이버의 모든 태스크를 볼 수 있습니다. 그러나 로그 링크는 사용자 프로파일에서만 사용할 수 있습니다. 또한 출력 레코드 수와 같은 일부 정보는 Live UI에서 수정됩니다.

## Lake Formation 권한이 부족하여 작업 실패
<a name="emr-serverless-lf-troubleshooting-insufficient-lf-permissions"></a>

작업 런타임 역할에 액세스 중인 테이블에서 SELECT 및 DESCRIBE를 실행할 권한이 있는지 확인합니다.

## RDD 실행이 실패한 작업
<a name="emr-serverless-lf-troubleshooting-rdd-execution"></a>

EMR Serverless는 현재 Lake Formation 지원 작업에서 탄력적 분산 데이터세트(RDD) 작업을 지원하지 않습니다.

## Amazon S3의 데이터 파일에 액세스할 수 없음
<a name="emr-serverless-lf-troubleshooting-s3-access-failure"></a>

Lake Formation에서 데이터 레이크의 위치를 등록했는지 확인합니다.

## 보안 검증 예외
<a name="emr-serverless-lf-troubleshooting-security-validation"></a>

EMR Serverless에서 보안 검증 오류를 탐지했습니다. AWS 지원 팀에 문의하여 도움을 받으세요.

## 계정 간에 AWS Glue 데이터 카탈로그 및 테이블 공유
<a name="emr-serverless-lf-troubleshooting-cross-account"></a>

여러 계정에서 데이터베이스와 테이블을 공유하고 Lake Formation을 계속 사용할 수 있습니다. 자세한 내용은 [Lake Formation의 교차 계정 데이터 공유](https://docs.aws.amazon.com/lake-formation/latest/dg/cross-account-permissions.html) 및를 [사용하여 Glue 데이터 카탈로그와 테이블을 교차 계정과 공유하려면 어떻게 AWS 해야 합니까 AWS Lake Formation?](https://repost.aws/knowledge-center/glue-lake-formation-cross-account)를 참조하세요.

# Spark 네이티브 세분화된 액세스 제어 알로리스팅된 PySpark API
<a name="clean-rooms-spark-fgac-pyspark-api-allowlist"></a>

보안 및 데이터 액세스 제어를 유지하기 위해 Spark 세분화된 액세스 제어(FGAC)는 특정 PySpark 함수를 제한합니다. 이러한 제한은 다음을 통해 적용됩니다.
+ 함수 실행을 방지하는 명시적 차단
+ 함수를 작동하지 않게 만드는 아키텍처 비호환성
+ 오류를 발생시키거나, 액세스 거부 메시지를 반환하거나, 호출 시 아무 작업도 수행하지 않을 수 있는 함수

Spark FGAC에서는 다음 PySpark 기능이 지원되지 않습니다.
+ RDD 작업(SparkRDDUnsupportedException으로 차단됨)
+ Spark Connect(지원되지 않음)
+ Spark 스트리밍(지원되지 않음)

네이티브 Spark FGAC 환경에서 나열된 함수를 테스트하고 예상대로 작동하는지 확인했지만 테스트에서는 일반적으로 각 API의 기본 사용만 다룹니다. 여러 입력 유형 또는 복잡한 로직 경로가 있는 함수에는 테스트되지 않은 시나리오가 있을 수 있습니다.

여기에 나열되지 않고 위의 지원되지 않는 범주에 명확하게 포함되지 않은 함수의 경우 다음을 권장합니다.
+ 감마 환경 또는 소규모 배포에서 먼저 테스트
+ 프로덕션에서 사용하기 전에 동작 확인

**참고**  
클래스 메서드가 나열되었지만 기본 클래스는 표시되지 않는 경우 메서드는 여전히 작동해야 합니다. 즉, 기본 클래스 생성자를 명시적으로 확인하지 않은 것입니다.

PySpark API는 모듈로 구성됩니다. 각 모듈 내의 메서드에 대한 일반적인 지원은 아래 표에 자세히 설명되어 있습니다.


| 모듈 이름 | Status | 참고 | 
| --- | --- | --- | 
|  pyspark\$1core  |  지원됨  |  이 모듈에는 기본 RDD 클래스가 포함되어 있으며 이러한 함수는 대부분 지원되지 않습니다.  | 
|  pyspark\$1sql  |  지원됨  |  | 
|  pyspark\$1testing  |  지원됨  |  | 
|  pyspark\$1resource  |  지원됨  |  | 
|  pyspark\$1streaming  |  차단됨  |  Spark FGAC에서는 스트리밍 사용이 차단됩니다.  | 
|  pyspark\$1mllib  |  실험적  |  이 모듈에는 RDD 기반 ML 작업이 포함되어 있으며 이러한 함수는 대부분 지원되지 않습니다. 이 모듈은 철저하게 테스트되지 않았습니다.  | 
|  pyspark\$1ml  |  실험적  |  이 모듈에는 DataFrame 기반 ML 작업이 포함되어 있으며 이러한 함수는 대부분 지원됩니다. 이 모듈은 철저하게 테스트되지 않았습니다.  | 
|  pyspark\$1pandas  |  지원됨  |    | 
|  pyspark\$1pandas\$1slow  |  지원됨  |    | 
| pyspark\$1connect |  차단됨  |  Spark FGAC에서는 Spark Connect 사용이 차단됩니다.  | 
| pyspark\$1pandas\$1connect |  차단됨  |  Spark FGAC에서는 Spark Connect 사용이 차단됩니다.  | 
| pyspark\$1pandas\$1slow\$1connect |  차단됨  |  Spark FGAC에서는 Spark Connect 사용이 차단됩니다.  | 
| pyspark\$1errors |  실험적  |  이 모듈은 철저하게 테스트되지 않았습니다. 사용자 지정 오류 클래스는 사용할 수 없습니다.  | 

**API 허용 목록**

다운로드 가능하고 검색하기 쉬운 목록을 위해 [네이티브 FGAC에서 허용되는 Python 함수](samples/Python functions allowed in Native FGAC.zip)에서 모듈 및 클래스가 있는 파일을 사용할 수 있습니다.