

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

# 테이블 생성
<a name="creating-tables"></a>

AWS Lake Formation 메타데이터 테이블에는 스키마 정보, 파티션 정보 및 데이터 위치를 포함하여 데이터 레이크의 데이터에 대한 정보가 포함됩니다. 이러한 테이블은 AWS Glue 데이터 카탈로그에 저장됩니다. 이를 사용하여 데이터 레이크의 기본 데이터에 액세스하고 Lake Formation 권한으로 해당 데이터를 관리할 수 있습니다. 테이블은 데이터 카탈로그의 데이터베이스 내에 저장됩니다.

데이터 카탈로그 테이블을 생성하는 몇 가지 방법이 있습니다.
+ AWS Glue에서 크롤러를 실행합니다. **AWS Glue 개발자 안내서의 [크롤러 정의](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)를 참조하세요.
+ 워크플로를 생성 및 실행합니다. [Lake Formation의 워크플로를 사용하여 데이터 가져오기](workflows.md)을(를) 참조하세요.
+ Lake Formation 콘솔, AWS Glue API 또는 AWS Command Line Interface (AWS CLI)를 사용하여 수동으로 테이블을 생성합니다.
+ 를 사용하여 테이블을 생성합니다 Amazon Athena.
+ 외부 계정의 테이블에 대한 리소스 링크를 생성합니다. [리소스 링크 생성](creating-resource-links.md)을(를) 참조하세요.

# Apache Iceberg 테이블 생성
<a name="creating-iceberg-tables"></a>

 AWS Lake Formation 는 Amazon S3에 있는 데이터와 AWS Glue Data Catalog 함께에서 Apache Parquet 데이터 형식을 사용하는 Apache Iceberg 테이블 생성을 지원합니다. 테이터 카탈로그의 테이블은 데이터 스토어의 데이터를 표현하는 메타데이터 정의입니다. 기본적으로 Lake Formation은 Iceberg v2 테이블을 생성합니다. v1과 v2 테이블의 차이점은 Apache Iceberg 설명서의 [Format version changes](https://iceberg.apache.org/spec/#appendix-e-format-version-changes)(포맷 버전 변경 사항)을 참조하세요.

 [Apache Iceberg](https://iceberg.apache.org/)는 매우 큰 분석 데이터세트를 위한 오픈 테이블 형식입니다. Iceberg를 사용하면 스키마를 쉽게 변경할 수 있습니다(이를 스키마 진화라고도 함). 다시 말해서 사용자는 기본 데이터를 손상시키지 않고 데이터 테이블에서 열을 추가하거나, 이름을 바꾸거나, 제거할 수 있습니다. 또한 Iceberg는 사용자가 시간 경과에 따른 데이터 변경 사항을 추적할 수 있는 데이터 버전 관리를 지원합니다. 이를 통해 사용자는 과거 버전의 데이터에 액세스하여 데이터를 쿼리하고 업데이트와 삭제 사이의 데이터 변화를 분석할 수 있습니다.

Lake Formation 콘솔 또는 AWS Glue API의 `CreateTable` 작업을 사용하여 데이터 카탈로그에 Iceberg 테이블을 생성할 수 있습니다. 자세한 내용은 [CreateTable 작업(Python: create\$1table)](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-CreateTable)을 참조하세요.

데이터 카탈로그에서 Iceberg 테이블을 생성할 때 Amazon S3에서 테이블 형식과 메타데이터 파일 경로를 지정해야 읽기 및 쓰기를 수행할 수 있습니다.

 Amazon S3 데이터 위치를 등록할 때 Lake Formation을 사용하여 세분화된 액세스 제어 권한을 사용하여 Iceberg 테이블을 보호할 수 있습니다 AWS Lake Formation. Amazon S3의 소스 데이터 및 Lake Formation에 등록되지 않은 메타데이터의 경우 액세스는 Amazon S3 및 AWS Glue 작업에 대한 IAM 권한 정책에 따라 결정됩니다. 자세한 내용은 [Lake Formation 권한 관리](managing-permissions.md) 단원을 참조하십시오.

**참고**  
데이터 카탈로그는 파티션 생성 및 Iceberg 테이블 속성 추가를 지원하지 않습니다.

**Topics**
+ [사전 조건](#iceberg-prerequisites)
+ [Iceberg 테이블 생성](#create-iceberg-table)

## 사전 조건
<a name="iceberg-prerequisites"></a>

 데이터 카탈로그에서 Iceberg 테이블을 생성하고 Lake Formation 데이터 액세스 권한을 설정하려면 다음 요구 사항을 완료해야 합니다.

1. 

**Lake Formation에 등록된 데이터 없이 Iceberg 테이블을 생성하는 데 필요한 권한.**

   데이터 카탈로그에서 테이블을 생성하는 데 필요한 권한 외에도 테이블 생성자는 다음 권한이 필요합니다.
   + 리소스 arn:aws:s3:::\$1bucketName\$1에 대한 `s3:PutObject`
   + 리소스 arn:aws:s3:::\$1bucketName\$1에 대한 `s3:GetObject`
   + 리소스 arn:aws:s3:::\$1bucketName\$1에 대한 `s3:DeleteObject`

1. 

**Lake Formation에 등록된 데이터를 사용하여 Iceberg 테이블을 생성하는 데 필요한 권한.**

   Lake Formation을 사용하여 데이터 레이크의 데이터를 관리하고 보호하려면 테이블을 위한 데이터가 있는 Amazon S3 위치를 Lake Formation에 등록합니다. 이는 Lake Formation이 Athena, Redshift Spectrum 및 Amazon EMR과 같은 AWS 분석 서비스에 자격 증명을 벤딩하여 데이터에 액세스할 수 있도록 하기 위한 것입니다. Amazon S3 위치 등록에 대한 자세한 내용은 [데이터 레이크에 Amazon S3 위치 추가](register-data-lake.md) 섹션을 참조하세요.

   Lake Formation에 등록된 기본 데이터를 읽고 쓰는 보안 주체는 다음과 같은 권한이 필요합니다.
   + `lakeformation:GetDataAccess`
   + `DATA_LOCATION_ACCESS`

     위치에 대한 데이터 위치 권한이 있는 보안 주체는 모든 하위 위치에 대한 위치 권한도 갖습니다.

     데이터 위치 권한에 대한 자세한 내용은 [기본 데이터 액세스 제어](access-control-underlying-data.md) 섹션을 참조하세요.

 압축을 활성화하려면 서비스가 데이터 카탈로그의 테이블을 업데이트할 권한이 있는 IAM 역할을 맡아야 합니다. 자세한 내용은 [Table optimization prerequisites](https://docs.aws.amazon.com/glue/latest/dg/optimization-prerequisites.html)를 참조하세요.

## Iceberg 테이블 생성
<a name="create-iceberg-table"></a>

Lake Formation 콘솔을 사용하거나이 페이지에 설명된 AWS Command Line Interface 대로 Iceberg v1 및 v2 테이블을 생성할 수 있습니다. AWS Glue 콘솔 또는를 사용하여 Iceberg 테이블을 생성할 수도 있습니다 AWS Glue 크롤러. 자세한 내용은 AWS Glue 개발자 안내서의 [데이터 카탈로그 및 크롤러](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html)를 참조하세요.

**Iceberg 테이블을 생성하려면**

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

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) Lake Formation 콘솔을 엽니다.

1. 데이터 카탈로그에서 **테이블**을 선택하고 **테이블 생성** 버튼을 사용하여 다음 속성을 지정합니다.
   + **테이블 이름**: 테이블 이름을 입력합니다. Athena를 사용하여 테이블에 액세스하는 경우 Amazon Athena 사용 설명서의 [이름 지정 팁](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html)을 사용하세요.
   + **데이터베이스**: 기존 데이터베이스를 선택하거나 새 데이터베이스를 생성합니다.
   + **설명**: 테이블에 대한 설명. 테이블 내용을 이해할 수 있도록 설명을 적을 수 있습니다.
   + **테이블 형식**: **테이블 형식**으로 Apache Iceberg를 선택합니다.  
![\[테이블 최적화 옵션으로 Apache Iceberg 테이블 옵션이 선택되었습니다.\]](http://docs.aws.amazon.com/ko_kr/lake-formation/latest/dg/images/table-optimization.png)
   + **테이블 최적화**
     + **압축** - 데이터 파일이 병합 및 재작성되어 불필요한 데이터를 제거하고 조각난 데이터를 더 크고 효율적인 파일로 통합합니다.
     + **스냅샷 보존** - 스냅샷은 Iceberg 테이블의 타임스탬프가 표시된 버전입니다. 스냅샷 보존 구성을 통해 고객은 스냅샷을 보존하는 기간과 보존할 스냅샷 수를 적용할 수 있습니다. 스냅샷 보존 최적화 프로그램을 구성하면 오래되고 불필요한 스냅샷과 연결된 파일을 제거하여 스토리지 오버헤드를 관리하는 데 도움이 될 수 있습니다.
     + **분리된 파일 삭제** - 분리된 파일은 Iceberg 테이블 메타데이터에서 더 이상 참조되지 않는 파일입니다. 이러한 파일은 시간이 지남에 따라 누적될 수 있으며, 특히 테이블 삭제 같은 작업이나 ETL 작업 실패 이후에 누적될 수 있습니다. 분리된 파일 삭제를 활성화하면 AWS Glue 가 이러한 불필요한 파일을 주기적으로 식별하고 제거하여 스토리지를 확보할 수 있습니다.

     자세한 내용은 [Iceberg 테이블 최적화](https://docs.aws.amazon.com/glue/latest/dg/table-optimizers.html)를 참조하세요.
   + **IAM 역할**: 압축을 실행하기 위해 서비스는 사용자를 대신하여 IAM 역할을 맡습니다. 드롭다운을 사용하여 IAM 역할을 선택할 수 있습니다. 압축 기능을 활성화하는 데 필요한 권한이 역할에 있는지 확인합니다.

     필수 권한에 대한 자세한 내용은 [Table optimization prerequisites](https://docs.aws.amazon.com/glue/latest/dg/optimization-prerequisites.html)를 참조하세요.
   + **위치**: 메타데이터 테이블을 저장하는 Amazon S3의 폴더 경로를 지정합니다. Iceberg가 읽기 및 쓰기를 수행하려면 데이터 카탈로그에 메타데이터 파일과 위치가 필요합니다.
   + **스키마**: **열 추가**를 선택하여 열과 열의 데이터 유형을 추가합니다. 빈 테이블을 생성하고 나중에 스키마를 업데이트할 수 있습니다. 데이터 카탈로그는 Hive 데이터 유형을 지원합니다. 자세한 내용은 [Hive 데이터 유형](https://cwiki.apache.org/confluence/plugins/servlet/mobile?contentId=27838462#content/view/27838462)을 참조하세요.

      Iceberg를 사용하면 테이블을 생성한 후 스키마와 파티션을 개선할 수 있습니다. [Athena 쿼리](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-evolving-table-schema.html)를 사용하여 테이블 스키마를 업데이트하고 [Spark 쿼리](https://iceberg.apache.org/docs/latest/spark-ddl/#alter-table-sql-extensions)를 사용하여 파티션을 업데이트할 수 있습니다.

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

```
aws glue create-table \
    --database-name iceberg-db \
    --region us-west-2 \
    --open-table-format-input '{
      "IcebergInput": { 
           "MetadataOperation": "CREATE",
           "Version": "2"
         }
      }' \
    --table-input '{"Name":"test-iceberg-input-demo",
            "TableType": "EXTERNAL_TABLE",
            "StorageDescriptor":{ 
               "Columns":[ 
                   {"Name":"col1", "Type":"int"}, 
                   {"Name":"col2", "Type":"int"}, 
                   {"Name":"col3", "Type":"string"}
                ], 
               "Location":"s3://DOC_EXAMPLE_BUCKET_ICEBERG/"
            }
        }'
```

------

# Iceberg 테이블 최적화
<a name="data-compaction"></a>

Lake Formation은 AWS 분석 엔진 및 ETL 작업에 사용되는 Apache Iceberg 테이블의 관리 및 성능을 개선하기 위해 여러 테이블 최적화 옵션을 지원합니다. 이러한 최적화 프로그램은 효율적인 스토리지 활용, 향상된 쿼리 성능 및 효과적인 데이터 관리를 제공합니다. Lake Formation에서 사용할 수 있는 기본 옵티마이저에는 다음 세 가지 유형이 있습니다.
+ **압축** - 데이터 압축은 작은 데이터 파일을 압축하여 스토리지 사용량을 줄이고 읽기 성능을 향상시킵니다. 데이터 파일이 병합 및 재작성되어 불필요한 데이터를 제거하고 조각난 데이터를 더 크고 효율적인 파일로 통합합니다. 필요에 따라 압축을 자동으로 실행하거나 수동으로 트리거하도록 구성할 수 있습니다.
+ **스냅샷 보존** - 스냅샷은 Iceberg 테이블의 타임스탬프가 표시된 버전입니다. 스냅샷 보존 구성을 통해 고객은 스냅샷을 보존하는 기간과 보존할 스냅샷 수를 적용할 수 있습니다. 스냅샷 보존 최적화 프로그램을 구성하면 오래되고 불필요한 스냅샷과 연결된 파일을 제거하여 스토리지 오버헤드를 관리하는 데 도움이 될 수 있습니다.
+ **분리된 파일 삭제** - 분리된 파일은 Iceberg 테이블 메타데이터에서 더 이상 참조되지 않는 파일입니다. 이러한 파일은 시간이 지남에 따라 누적될 수 있으며, 특히 테이블 삭제 같은 작업이나 ETL 작업 실패 이후에 누적될 수 있습니다. 분리된 파일 삭제를 활성화하면 AWS Glue 가 이러한 불필요한 파일을 주기적으로 식별하고 제거하여 스토리지를 확보할 수 있습니다.

 AWS Glue 콘솔 또는 AWS Glue API 작업을 사용하여 데이터 카탈로그의 개별 Iceberg 테이블에 대해 압축 AWS CLI, 스냅샷 보존 및 분리된 파일 삭제 옵티마이저를 활성화하거나 비활성화할 수 있습니다.

자세한 내용은 AWS Glue 개발자 안내서의 [Iceberg 테이블 최적화](https://docs.aws.amazon.com/glue/latest/dg/table-optimizers.html)를 참조하세요.

# 테이블 검색
<a name="searching-for-tables"></a>

 AWS Lake Formation 콘솔을 사용하여 이름, 위치, 데이터베이스 포함 등을 기준으로 데이터 카탈로그 테이블을 검색할 수 있습니다. 검색 결과에는 Lake Formation 권한이 있는 테이블만 표시됩니다.

**테이블을 검색하려면(콘솔)**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) Lake Formation 콘솔을 엽니다.

1. 탐색 창에서 **테이블**을 선택합니다.

1. 페이지 상단의 검색 필드에 커서를 놓습니다. 필드에는 **속성으로 테이블 찾기라는 자리 표시자 텍스트가 있습니다.

   **속성** 메뉴가 나타나고 검색 기준으로 사용할 다양한 테이블 속성이 표시됩니다.  
![\[속성 메뉴는 검색 필드에서 드롭다운되며 이름, 분류, 데이터베이스, 위치, 카탈로그 ID 등의 항목을 포함합니다.\]](http://docs.aws.amazon.com/ko_kr/lake-formation/latest/dg/images/search-for-tables.png)

1. 다음 중 하나를 수행하세요.
   + 포함된 데이터베이스로 검색합니다.

     1. **속성** 메뉴에서 **데이터베이스**를 선택한 다음 **데이터베이스** 메뉴가 나타나면 데이터베이스를 선택하거나 데이터베이스 이름을 입력하고 **Enter** 키를 누릅니다.

        데이터베이스에서 권한이 있는 테이블이 나열됩니다.

     1. (선택 사항) 데이터베이스의 단일 테이블로 목록 범위를 좁히려면 다시 검색 필드에 커서를 놓고 **속성** 메뉴에서 **이름**을 선택한 다음 **테이블** 메뉴가 나타나면 테이블 이름을 선택하거나 테이블 이름을 입력하고 **Enter** 키를 누릅니다.

        단일 테이블이 나열되고 데이터베이스 이름과 테이블 이름이 모두 검색 필드 아래에 타일로 표시됩니다.  
![\[검색 필드 아래에는 두 개의 타일이 있습니다. 하나는 선택한 데이터베이스 이름이 포함된 데이터베이스 타일이고, 다른 하나는 선택한 테이블 이름이 포함된 테이블 타일입니다. 타일 오른쪽에는 필터 지우기 버튼이 있습니다.\]](http://docs.aws.amazon.com/ko_kr/lake-formation/latest/dg/images/search-for-tables-with-filter.png)

        필터를 조정하려면 타일 중 하나를 닫거나 **필터 지우기**를 선택합니다.
   + 다른 속성으로 검색합니다.

     1. **속성** 메뉴에서 검색 속성을 선택합니다.

         AWS 계정 ID로 검색하려면 **속성** 메뉴에서 **카탈로그 ID**를 선택하고 유효한 AWS 계정 ID(예: 111122223333)를 입력한 다음 **Enter** 키를 누릅니다.

        위치로 검색하려면 **속성** 메뉴에서 **위치**를 선택하고 **위치** 메뉴가 나타나면 위치를 선택합니다. 선택한 위치(예: Amazon S3)의 루트 위치에 있는 모든 테이블이 반환됩니다.

**를 사용하여 테이블 검색 AWS CLI**
+ 다음 예제에서는 부분 검색을 실행하는 방법을 보여줍니다. `--search-text` 파라미터를 사용하면 메타데이터에 지정된 텍스트가 포함된 테이블을 검색할 수 있습니다. 이 경우 이름, 설명 또는 기타 메타데이터 필드에 '고객'이 있는 모든 테이블을 반환합니다.

  ```
  aws glue search-tables 
        --search-text "customer" 
        --region AWS 리전
        --max-results 10
        --sort-criteria "FieldName=Name,Sort=ASC"
  ```

# AWS 계정 간에 데이터 카탈로그 테이블 및 데이터베이스 공유
<a name="sharing-catalog-resources"></a>

리소스에 대한 Lake Formation 권한을 외부 AWS 계정에 부여하여 데이터 카탈로그 리소스(데이터베이스 및 테이블)를 외부 계정과 공유할 수 있습니다. 그러면 사용자는 여러 계정의 테이블을 조인하고 쿼리하는 작업과 쿼리를 실행할 수 있습니다. 몇 가지 제한 사항이 있지만 데이터 카탈로그 리소스를 다른 계정과 공유하면 해당 계정의 보안 주체는 해당 리소스가 자신의 데이터 카탈로그에 있는 것처럼 해당 리소스에서 작업을 수행할 수 있습니다.

외부 AWS 계정의 특정 보안 주체와 리소스를 공유하지 않고 AWS 계정 또는 조직과 리소스를 공유합니다. AWS 조직과 리소스를 공유하면 해당 조직의 모든 수준에 있는 모든 계정과 리소스를 공유하게 됩니다. 이때 각 외부 계정의 데이터 레이크 관리자는 계정의 보안 주체에 공유 리소스에 대한 권한을 부여해야 합니다.

자세한 내용은 [Lake Formation에서의 교차 계정 데이터 공유](cross-account-permissions.md) 및 [데이터 카탈로그 리소스에 대한 권한 부여](granting-catalog-permissions.md) 섹션을 참조하세요.

**추가 참고:**  
[공유 데이터 카탈로그 테이블 및 데이터베이스 액세스 및 보기](viewing-shared-resources.md)
[사전 조건](cross-account-prereqs.md)