

# 분리된 파일 삭제
<a name="orphan-file-deletion"></a>

 AWS Glue Data Catalog에서는 Iceberg 테이블에서의 분리된 파일 제거를 허용합니다. 분리된 파일은 지정된 테이블 위치 아래의 Amazon S3 데이터 소스에 존재하고 Iceberg 테이블 메타데이터에서 추적되지 않으며 구성된 수명 제한보다 오래된 참조되지 않는 파일입니다. 이러한 분리된 파일은 압축, 파티션 삭제 또는 테이블 재작성과 같은 작업의 오류로 인해 시간이 지남에 따라 누적되어 불필요한 스토리지 공간을 차지할 수 있습니다.

AWS Glue의 분리된 파일 삭제 옵티마이저는 테이블 메타데이터와 실제 데이터 파일을 스캔하고, 분리된 파일을 식별 및 삭제하여 스토리지 공간을 확보합니다. 옵티마이저는 옵티마이저 생성 날짜 이후에 생성된 파일 중 구성된 삭제 기준을 충족하는 파일만 제거합니다. 옵티마이저 생성 날짜 또는 그 이전에 생성된 파일은 삭제되지 않습니다.

**분리된 파일 삭제 로직**

1. 날짜 확인 - 파일 생성 날짜를 옵티마이저 생성 날짜와 비교합니다. 파일 생성 날짜가 옵티마이저 생성 날짜보다 이전이거나 같으면 해당 파일을 건너뜁니다.

1. 옵티마이저 구성 확인 - 옵티마이저 생성 날짜 이후에 생성된 파일의 경우는 구성된 수명 제한을 기준으로 파일을 평가합니다. 삭제 기준과 일치하는 경우 옵티마이저가 파일을 삭제합니다. 기준과 일치하지 않는 파일은 건너뜁니다.

 데이터 카탈로그에서 분리된 파일 삭제 테이블 옵티마이저를 생성하여 분리된 파일 삭제를 시작할 수 있습니다.

**중요**  
 기본적으로 분리된 파일 삭제는 AWS Glue 테이블 위치 전체에서 파일을 평가합니다. API 파라미터를 사용하여 평가 범위를 제한하도록 하위 접두사를 구성할 수 있지만, 테이블 위치에 다른 데이터 소스 또는 테이블의 파일이 포함되어서는 안 됩니다. 테이블 위치가 다른 데이터 소스와 겹치는 경우, 서비스가 관련 없는 파일을 분리된 파일로 식별하고 삭제할 수 있습니다.

**Topics**
+ [분리된 파일 삭제 활성화](enable-orphan-file-deletion.md)
+ [분리된 파일 삭제 옵티마이저 업데이트](update-orphan-file-deletion.md)
+ [분리된 파일 삭제 비활성화](disable-orphan-file-deletion.md)

# 분리된 파일 삭제 활성화
<a name="enable-orphan-file-deletion"></a>

 AWS Glue 콘솔, AWS CLI 또는 AWS API를 사용하여 데이터 카탈로그의 Apache Iceberg 테이블에서 분리된 파일 삭제를 활성화할 수 있습니다. 새 테이블의 경우 Apache Iceberg를 테이블 형식으로 선택하고 테이블을 생성할 때 분리된 파일 삭제 옵티마이저를 활성화할 수 있습니다. 스냅샷 보존은 새 테이블에 대해 기본적으로 비활성화되어 있습니다.

------
#### [ Console ]

**분리된 파일 삭제 활성화**

1.  [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 열고 데이터 레이크 관리자, 테이블 작성자 또는 테이블에 대한 `glue:UpdateTable` 및 `lakeformation:GetDataAccess` 권한을 부여받은 사용자로 로그인합니다.

1. 탐색 창의 **데이터 카탈로그**에서 **테이블**을 선택합니다.

1. **테이블** 페이지에서 분리된 파일 삭제를 활성화하려는 Iceberg 테이블을 선택합니다.

   페이지 하단 섹션에서 **테이블 최적화** 탭을 선택하고 **작업**에서 **활성화**, **분리된 파일 삭제**를 선택합니다.

   페이지의 오른쪽 상단에 있는 **작업** 메뉴에서 **최적화** 아래 **활성화**를 선택할 수도 있습니다.

1. **최적화 활성화** 페이지의 **최적화 옵션**에서 **분리된 파일 삭제**를 선택합니다.

1. **기본 설정**을 사용하는 경우 3일 후에 모든 분리된 파일이 삭제됩니다. 분리된 파일을 특정 일수 동안 유지하려면 **설정 사용자 지정**을 선택합니다.

1. 다음으로 분리된 파일을 삭제하는 데 필요한 권한이 있는 IAM 역할을 선택합니다.

1. Iceberg 테이블 옵티마이저가 특정 가상 프라이빗 클라우드(VPC)에서 Amazon S3 버킷에 액세스해야 하는 보안 정책 구성이 있는 경우 AWS Glue 네트워크 연결을 생성하거나 기존 연결을 사용하세요.

   AWS Glue VPC 연결을 아직 설정하지 않은 경우 AWS Glue 콘솔 또는 AWS CLI/SDK를 사용하여 [커넥터에 대한 연결 생성](https://docs.aws.amazon.com/glue/latest/dg/creating-connections.html) 섹션의 단계에 따라 새 연결을 생성하세요.

1. **설정 사용자 지정**을 선택하는 경우 **분리된 파일 삭제 구성**에서 삭제하기 전에 파일을 유지할 기간(일)을 입력합니다. 옵티마이저 실행 간격을 지정할 수도 있습니다. 기본값은 24시간입니다.

1. **최적화 활성화**를 선택합니다.

------
#### [ AWS CLI ]

 AWS Glue에서 Iceberg 테이블에 대해 분리된 파일 삭제를 활성화하려면 `orphan_file_deletion` 유형의 테이블 옵티마이저를 생성하고 `enabled` 필드를 true로 설정해야 합니다. AWS CLI를 사용하여 Iceberg 테이블에 대해 분리된 파일 삭제 옵티마이저를 생성하려면 다음 명령을 사용할 수 있습니다.

```
aws glue create-table-optimizer \
 --catalog-id 123456789012 \
 --database-name iceberg_db \
 --table-name iceberg_table \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role","enabled":true, "vpcConfiguration":{
"glueConnectionName":"glue_connection_name"}, "orphanFileDeletionConfiguration":{"icebergConfiguration":{"orphanFileRetentionPeriodInDays":3, "location":'S3 location'}}}'\
 --type orphan_file_deletion
```

 이 명령은 지정된 Iceberg 테이블에 대해 분리된 파일 삭제 옵티마이저를 생성합니다. 주요 파라미터:
+ roleArn - S3 버킷과 Glue 리소스에 대한 액세스 권한이 있는 IAM 역할의 ARN.
+ enabled - true로 설정하면 옵티마이저를 활성화합니다.
+ orphanFileRetentionPeriodInDay - 분리된 파일을 삭제하기 전에 유지할 기간(일 단위, 최소 1일).
+ type - orphan\$1file\$1deletion으로 설정하면 분리된 파일 삭제 옵티마이저를 생성합니다.

 테이블 옵티마이저를 생성한 후에는 정기적으로 분리된 파일 삭제를 실행합니다(활성화된 상태로 두면 하루에 한 번). `list-table-optimizer-runs` API를 사용하여 실행을 확인할 수 있습니다. 분리된 파일 삭제 작업은 테이블의 Iceberg 메타데이터에서 추적되지 않는 파일을 식별하고 삭제합니다.

------
#### [ API ]

[CreateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-CreateTableOptimizer) 작업을 직접 호출하여 특정 테이블에 대한 분리된 파일 삭제 옵티마이저를 생성합니다.

------

# 분리된 파일 삭제 옵티마이저 업데이트
<a name="update-orphan-file-deletion"></a>

 AWS Glue 콘솔, AWS CLI 또는 `UpdateTableOptimizer` 작업을 사용하여 분리된 파일의 보존 기간 변경이나 옵티마이저에서 사용하는 IAM 역할 변경 등 분리된 파일 삭제 옵티마이저의 구성을 수정할 수 있습니다.

------
#### [ AWS Management Console ]

**분리된 파일 삭제 옵티마이저 업데이트**

1.  **데이터 카탈로그**를 선택하고 **테이블**을 선택합니다. 테이블 목록에서 분리된 파일 삭제 옵티마이저 구성을 업데이트하려는 테이블을 선택합니다.

1. **테이블 세부 정보** 페이지의 하단 섹션에서 **테이블 최적화**를 선택한 다음, **편집**을 선택합니다.

1.  **최적화 편집** 페이지에서 원하는 대로 변경합니다.

1.  **저장**을 선택합니다.

------
#### [ AWS CLI ]

 AWS Glue에서 `update-table-optimizer` 호출을 사용하여 분리된 파일 삭제 옵티마이저를 업데이트할 수 있습니다. 이를 통해 업데이트된 `OrphanFileRetentionPeriodInDays`를 지정할 수 있는 `icebergConfiguration` 필드의 `OrphanFileDeletionConfiguration`을 수정하여 분리된 파일을 보존할 기간(일)을 설정하고, 분리된 파일을 삭제할 Iceberg 테이블 위치를 지정할 수 있습니다.

```
aws glue update-table-optimizer \
 --catalog-id 123456789012 \
 --database-name iceberg_db \
 --table-name Iceberg_table \
 --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role","enabled":true, "vpcConfiguration":{"glueConnectionName":"glue_connection_name"},"orphanFileDeletionConfiguration":{"icebergConfiguration":{"orphanFileRetentionPeriodInDays":5}}}' \
 --type orphan_file_deletion
```

------
#### [ API ]

[UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) 작업을 직접 호출하여 테이블에 대해 분리된 파일 삭제 옵티마이저를 업데이트합니다.

------

 

# 분리된 파일 삭제 비활성화
<a name="disable-orphan-file-deletion"></a>

 AWS Glue 콘솔 또는 AWS CLI를 사용하여 특정 Apache Iceberg 테이블에 대한 분리된 파일 삭제 옵티마이저를 비활성화할 수 있습니다.

------
#### [ Console ]

**분리된 파일 삭제 비활성화**

1. **데이터 카탈로그**를 선택하고 **테이블**을 선택합니다. 테이블 목록에서 분리된 파일 삭제 옵티마이저를 비활성화할 Iceberg 테이블을 선택합니다.

1. **테이블 세부 정보** 페이지 하단 섹션에서 **테이블 최적화** 탭을 선택합니다.

1. **작업**을 선택한 다음, **비활성화**, **분리된 파일 삭제**를 선택합니다.

   **작업** 메뉴의 **최적화**에서 **비활성화**를 선택할 수도 있습니다.

1.  확인 메시지에서 **비활성화**를 선택합니다. 분리된 파일 삭제 옵티마이저를 나중에 다시 활성화할 수 있습니다.

    확인한 이후 분리된 파일 삭제 옵티마이저가 비활성화되고 분리된 파일 삭제 상태가 `Not enabled`가 됩니다.

------
#### [ AWS CLI ]

다음 예제에서 계정 ID를 유효한 AWS 계정 ID로 바꿉니다. 데이터베이스 이름과 테이블 이름을 실제 Iceberg 테이블 이름 및 데이터베이스 이름으로 바꿉니다. `roleArn`을 옵티마이저 비활성화에 필요한 권한이 있는 IAM 역할의 AWS 리소스 이름(ARN)과 실제 이름으로 바꿉니다.

```
aws glue update-table-optimizer \
  --catalog-id 123456789012 \
  --database-name iceberg_db \
  --table-name iceberg_table \
  --table-optimizer-configuration '{"roleArn":"arn:aws:iam::123456789012:role/optimizer_role", "enabled":'false'}'\ 
  --type orphan_file_deletion
```

------
#### [ API ]

[UpdateTableOptimizer](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-table-optimizers.html#aws-glue-api-table-optimizers-UpdateTableOptimizer) 작업을 직접 호출하여 특정 테이블에 대한 스냅샷 보존 옵티마이저를 비활성화합니다.

------