다음을 통해 공유


OneLake에서 빙산 테이블 사용

Microsoft OneLake에서는 Delta Lake 및 Apache Iceberg 형식의 테이블로 원활하게 작업할 수 있습니다.

이러한 유연성은 메타데이터 가상화를 통해 사용하도록 설정되며, 이는 Iceberg 테이블을 Delta Lake 테이블로 해석할 수 있게 하는 기능이며 그 반대의 경우도 마찬가지입니다. Iceberg 테이블을 직접 작성하거나 바로 가기를 만들어 다양한 패브릭 워크로드에서 이러한 테이블에 액세스할 수 있도록 할 수 있습니다. 마찬가지로 Delta Lake 형식으로 작성된 패브릭 테이블은 Iceberg 판독기를 사용하여 읽을 수 있습니다.

Iceberg 테이블 폴더에 대한 바로 가기를 작성하거나 만들 때 OneLake는 테이블에 대한 가상 Delta Lake 메타데이터(델타 로그)를 자동으로 생성하여 패브릭 워크로드에서 사용할 수 있도록 합니다. 반대로 Delta Lake 테이블에는 이제 가상 Iceberg 메타데이터가 포함되어 Iceberg 판독기와의 호환성을 허용합니다.

Iceberg에서 Delta Lake로의 테이블 가상화를 보여 주는 다이어그램

이 문서에는 Snowflake와 함께 Iceberg 테이블을 사용하기 위한 지침이 포함되어 있지만, 이 기능은 스토리지에 Parquet 형식의 데이터 파일이 있는 모든 Iceberg 테이블을 사용하기 위한 것입니다.

Delta Lake 테이블을 빙산으로 가상화

Delta Lake 형식에서 Iceberg 형식으로 테이블의 자동 변환 및 가상화를 설정하려면 다음 단계를 수행합니다.

중요합니다

이 기능은 프리뷰로 제공됩니다.

  1. 작업 영역 설정에서 Delta Lake에서 Apache Iceberg 테이블 형식 가상화 사용이라는 위임된 OneLake 설정을 켜서 Delta Lake 테이블의 자동 테이블 가상화를 Iceberg 형식 으로 사용하도록 설정합니다.

    참고 항목

    이 설정은 현재 미리 보기로 제공되는 기능을 제어합니다. 이 설정은 모든 사용자에 대해 기능이 활성화되고 더 이상 미리 보기로 표시되지 않는 경우 향후 업데이트에서 제거됩니다.

  2. Delta Lake 테이블 또는 바로 가기가 데이터 항목의 Tables 섹션에 있는지 확인하십시오. 데이터 항목은 레이크하우스 또는 다른 패브릭 데이터 항목일 수 있습니다.

    팁 (조언)

    Lakehouse가 스키마를 사용하는 경우 테이블 디렉터리가 스키마(예: dbo스키마) 내에 직접 배치됩니다. 레이크하우스가 스키마를 사용하지 않도록 설정된 경우, 테이블 디렉터리가 Tables 디렉터리 내에 직접 위치하게 됩니다.

  3. Delta Lake 테이블이 가상 Iceberg 형식으로 성공적으로 변환되었는지 확인합니다. 테이블 뒤에 있는 디렉터리를 검사하여 이 작업을 수행할 수 있습니다.

    테이블이 레이크하우스에 있는 경우 디렉터리를 보려면 패브릭 UI에서 테이블을 마우스 오른쪽 단추로 클릭하고 파일 보기를 선택할 수 있습니다.

    테이블이 웨어하우스, 데이터베이스 또는 미러된 데이터베이스와 같은 다른 데이터 항목 형식에 있는 경우 패브릭 UI가 아닌 Azure Storage Explorer 또는 OneLake 파일 탐색기 같은 클라이언트를 사용하여 테이블 뒤에 있는 파일을 확인해야 합니다.

  4. 테이블 폴더 내에 이름이 지정된 metadata 디렉터리가 표시되어야 하며 변환 로그 파일을 포함하여 여러 파일이 포함되어야 합니다. 가장 최근 변환의 타임스탬프 및 오류 세부 정보를 포함하여 Delta Lake에서 Iceberg로의 변환에 대한 자세한 정보를 보려면 변환 로그 파일을 엽니다.

  5. 변환 로그 파일에 테이블이 성공적으로 변환되었음을 표시하는 경우 선택한 서비스, 앱 또는 라이브러리를 사용하여 Iceberg 테이블을 읽습니다.

    사용하는 Iceberg 판독기에 따라 테이블 디렉터리의 경로 또는 디렉터리에 표시된 .metadata.json 가장 최근 metadata 파일에 대한 경로를 알아야 합니다.

    버전 번호가 가장 높은 파일에 대한 속성 보기를 열어 테이블의 최신 메타데이터 파일에 대한 *.metadata.json HTTP 경로를 볼 수 있습니다. 이 경로를 기록해 둡다.

    데이터 항목 폴더의 Tables 경로는 다음과 같습니다.

    https://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828/Tables/
    

    해당 폴더 내에서 최신 메타데이터 파일의 상대 경로는 다음과 같 dbo/MyTable/metadata/321.metadata.json을 수 있습니다.

    Snowflake를 사용하여 가상 Iceberg 테이블을 읽으려면 이 가이드의 단계를 따르세요.

Iceberg 테이블에 대한 테이블 바로 가기 만들기

OneLake 바로 가기에서 지원하는 스토리지 위치에 Iceberg 테이블이 이미 있는 경우 다음 단계에 따라 바로 가기를 만들고 Delta Lake 형식으로 Iceberg 테이블을 표시합니다.

  1. 빙산 테이블을 찾습니다. Azure Data Lake Storage, OneLake, Amazon S3, Google Cloud Storage 또는 S3 호환 스토리지 서비스에 있을 수 있는 Iceberg 테이블이 저장되는 위치를 찾습니다.

    참고 항목

    Snowflake를 사용하고 있으며 Iceberg 테이블이 저장되는 위치를 잘 모르는 경우 다음 문을 실행하여 Iceberg 테이블의 스토리지 위치를 확인할 수 있습니다.

    SELECT SYSTEM$GET_ICEBERG_TABLE_INFORMATION('<table_name>');

    이 문을 실행하면 Iceberg 테이블에 대한 메타데이터 파일의 경로가 반환됩니다. 이 경로는 Iceberg 테이블을 포함하는 스토리지 계정을 알려줍니다. 예를 들어 Azure Data Lake Storage에 저장된 Iceberg 테이블의 경로를 찾는 관련 정보는 다음과 같습니다.

    {"metadataLocation":"azure://<storage_account_path>/<path_within_storage>/<table_name>/metadata/00001-389700a2-977f-47a2-9f5f-7fd80a0d41b2.metadata.json","status":"success"}

    Iceberg 테이블 폴더에는 폴더가 포함되어 metadata 야 합니다. 이 폴더에는 하나 이상의 파일이 포함됩니다 .metadata.json.

  2. 패브릭 레이크하우스에서 레이크하우스의 테이블 영역에 새 테이블 바로 가기를 만듭니다.

    팁 (조언)

    레이크하우스의 Tables 폴더 아래에 dbo와 같은 스키마가 표시되면 lakehouse는 스키마를 사용할 수 있습니다. 이 경우 스키마를 마우스 오른쪽 단추로 클릭하고 스키마 아래에 표 바로 가기를 만듭니다.

    새 바로 가기 작업을 보여 주는 스크린샷.

  3. 바로 가기의 대상 경로에 대해 Iceberg 테이블 폴더를 선택합니다. Iceberg 테이블 폴더에는 해당 폴더와 metadata 폴더가 data 포함됩니다.

  4. 바로 가기가 만들어지면 이 테이블이 Lakehouse에 Delta Lake 테이블로 반영되어 패브릭 전체에서 사용할 수 있도록 자동으로 표시됩니다.

    만든 바로 가기를 보여 주는 스크린샷.

    새 Iceberg 테이블 바로 가기가 사용 가능한 테이블로 표시되지 않는 경우 문제 해결 섹션을 확인합니다.

문제 해결

다음 팁은 Iceberg 테이블이 이 기능과 호환되는지 확인하는 데 도움이 될 수 있습니다.

Iceberg 테이블의 폴더 구조 확인

원하는 스토리지 탐색기 도구에서 Iceberg 폴더를 열고 원래 위치에서 Iceberg 폴더의 디렉터리 목록을 확인합니다. 다음 예제와 같은 폴더 구조가 표시됩니다.

../
|-- MyIcebergTable123/
    |-- data/
        |-- A5WYPKGO_2o_APgwTeNOAxg_0_1_002.parquet
        |-- A5WYPKGO_2o_AAIBON_h9Rc_0_1_003.parquet
    |-- metadata/
        |-- 00000-1bdf7d4c-dc90-488e-9dd9-2e44de30a465.metadata.json
        |-- 00001-08bf3227-b5d2-40e2-a8c7-2934ea97e6da.metadata.json
        |-- 00002-0f6303de-382e-4ebc-b9ed-6195bd0fb0e7.metadata.json
        |-- 1730313479898000000-Kws8nlgCX2QxoDHYHm4uMQ.avro
        |-- 1730313479898000000-OdsKRrRogW_PVK9njHIqAA.avro
        |-- snap-1730313479898000000-9029d7a2-b3cc-46af-96c1-ac92356e93e9.avro
        |-- snap-1730313479898000000-913546ba-bb04-4c8e-81be-342b0cbc5b50.avro

메타데이터 폴더가 표시되지 않거나 이 예제에 표시된 확장명이 있는 파일이 표시되지 않으면 제대로 생성된 Iceberg 테이블이 없을 수 있습니다.

변환 로그 확인

Iceberg 테이블이 Delta Lake 테이블로 가상화되면 바로 가기 폴더 내에서 명명된 _delta_log/ 폴더를 찾을 수 있습니다. 이 폴더에는 성공적으로 변환된 후 Delta Lake 형식의 메타데이터(델타 로그)가 포함됩니다.

이 폴더에는 최근 시도된 변환의 성공 또는 실패 세부 정보가 포함된 파일도 포함되어 latest_conversion_log.txt 있습니다.

바로 가기를 만든 후 이 파일의 내용을 보려면 레이크하우스의 테이블 영역에서 Iceberg 테이블 바로 가기 메뉴를 열고 파일 보기를 선택합니다.

스크린샷 파일 보기 메뉴 항목.

다음 예제와 같은 구조체가 표시됩니다.

Tables/
|-- MyIcebergTable123/
    |-- data/
        |-- <data files>
    |-- metadata/
        |-- <metadata files>
    |-- _delta_log/   <-- Virtual folder. This folder doesn't exist in the original ___location.
        |-- 00000000000000000000.json
        |-- latest_conversion_log.txt   <-- Conversion log with latest success/failure details.

변환 로그 파일을 열어 최신 변환 시간 또는 실패 세부 정보를 확인합니다. 변환 로그 파일이 표시되지 않으면 변환이 시도되지 않았습니다.

변환을 시도하지 않은 경우

변환 로그 파일이 표시되지 않으면 변환이 시도되지 않았습니다. 다음은 변환을 시도하지 않는 두 가지 일반적인 이유입니다.

  • 바로 가기가 올바른 위치에 만들어지지 않았습니다.

    Iceberg 테이블에 대한 바로 가기를 Delta Lake 형식으로 변환하려면 스키마를 사용하지 않는 레이크하우스의 Tables 폴더 바로 아래에 바로 가기를 배치해야 합니다. 테이블을 Delta Lake 테이블로 자동으로 가상화하려면 파일 섹션이나 다른 폴더 아래에 바로 가기를 배치해서는 안 됩니다.

    테이블 폴더에서 바로 가기의 올바른 배치를 보여 주는 스크린샷

  • 바로 가기의 대상 경로는 Iceberg 폴더 경로가 아닙니다.

    바로 가기를 만들 때 대상 스토리지 위치에서 선택한 폴더 경로는 Iceberg 테이블 폴더여야 합니다. 이 폴더에는 해당 폴더와 metadata 폴더가 data 포함됩니다.

    바로 가기를 만드는 동안 바로 가기 대상 경로의 내용을 보여 주는 스크린샷

Snowflake의 "패브릭 용량 영역의 유효성을 검사할 수 없습니다." 오류 메시지

Snowflake를 사용하여 OneLake에 새 빙산 테이블을 작성하는 경우 다음 오류 메시지가 표시될 수 있습니다.

패브릭 용량 영역의 유효성을 검사할 수 없습니다. 이유: '잘못된 액세스 토큰입니다. 이는 인증 및 범위 지정 때문일 수 있습니다. 위임된 범위를 확인하세요.'

이 오류가 표시되면, Fabric 테넌트 관리자가 Snowflake를 사용하여 OneLake에 빙산 테이블 쓰기 섹션에서 언급된 두 가지 테넌트 설정을 제대로 활성화했는지 재확인하십시오.

  1. 패브릭 UI의 오른쪽 위 모서리에서 설정을 열고 관리 포털을 선택합니다.
  2. 테넌트 설정 아래의 개발자 설정 섹션에서 레이블이 지정된 서비스 주체가 패브릭 API를 사용할 수 있도록 설정합니다.
  3. 동일한 영역의 OneLake 설정 섹션에서 레이블이 지정된 설정을 사용하도록 설정 하면 사용자가 Fabric 외부의 앱을 사용하여 OneLake에 저장된 데이터에 액세스할 수 있습니다.

제한 사항 및 고려 사항

이 기능을 사용하는 경우 다음과 같은 일시적인 제한 사항에 유의하세요.

  • 지원되는 데이터 유형

    다음 Iceberg 열 데이터 형식은 이 기능을 사용하여 해당 Delta Lake 형식에 매핑됩니다.

    빙산 열 유형 Delta Lake 열 형식 설명
    int integer
    long long 형식 너비 문제를 참조하세요.
    float float
    double double 형식 너비 문제를 참조하세요.
    decimal(P, S) decimal(P, S) 형식 너비 문제를 참조하세요.
    boolean boolean
    date date
    timestamp timestamp_ntz Iceberg 데이터 형식에는 timestamp 표준 시간대 정보가 포함되어 있지 않습니다. Delta Lake 유형은 timestamp_ntz 패브릭 워크로드에서 완전히 지원되지 않습니다. 표준 시간대가 포함된 타임스탬프를 사용하는 것이 좋습니다.
    timestamptz timestamp Snowflake에서 이 형식을 사용하려면 Iceberg 테이블을 만드는 동안 열 형식으로 지정 timestamp_ltz 합니다. Snowflake에서 지원되는 Iceberg 데이터 형식에 대한 자세한 내용은 여기를 참조하세요.
    string string
    binary binary
    time 해당 없음(N/A) 지원되지 않음
  • 형식 너비 문제

    Snowflake를 사용하여 Iceberg 테이블을 작성하고 테이블에 열 형식INT64doubleDecimal 있거나 전체 자릿수>가 10인 경우 결과 가상 Delta Lake 테이블은 모든 패브릭 엔진에서 사용할 수 없습니다. 다음과 같은 오류가 표시 될 수 있습니다.

    Parquet column cannot be converted in file ... Column: [ColumnA], Expected: decimal(18,4), Found: INT32.
    

    이 문제에 대한 수정 작업을 진행 중입니다.

    해결 방법: Lakehouse 테이블 미리 보기 UI를 사용하고 이 문제를 확인하는 경우 SQL 엔드포인트 보기(오른쪽 위 모서리, Lakehouse 보기 선택, SQL 엔드포인트로 전환)로 전환하고 여기에서 테이블을 미리 보고 이 오류를 해결할 수 있습니다. 그런 다음, Lakehouse 보기로 다시 전환하면 테이블 미리 보기가 제대로 표시됩니다.

    Spark Notebook 또는 작업을 실행하고 이 문제가 발생하는 경우 Spark 구성spark.sql.parquet.enableVectorizedReader을 .로 설정 false 하여 이 오류를 해결할 수 있습니다. 다음은 Spark Notebook에서 실행할 PySpark 명령의 예입니다.

    spark.conf.set("spark.sql.parquet.enableVectorizedReader","false")
    
  • Iceberg 테이블 메타데이터 스토리지가 이식 가능하지 않음

    Iceberg 테이블의 메타데이터 파일은 절대 경로 참조를 사용하여 서로를 참조합니다. Iceberg 메타데이터 파일을 다시 작성하지 않고 Iceberg 테이블의 폴더 내용을 다른 위치로 복사하거나 이동하면 이 OneLake 기능을 포함하여 Iceberg 판독기에서 테이블을 읽을 수 없게 됩니다.

    해결 방법:

    이 기능을 사용하기 위해 Iceberg 테이블을 다른 위치로 이동해야 하는 경우 원래 Iceberg 테이블을 작성한 도구를 사용하여 원하는 위치에 새 빙산 테이블을 작성합니다.

  • Iceberg 테이블 폴더에는 메타데이터 파일 집합이 하나만 포함되어야 합니다.

    Snowflake에서 Iceberg 테이블을 삭제하고 다시 만들면 메타데이터 파일이 정리되지 않습니다. 이 동작은 Snowflake의 UNDROP 기능을 지원하기 위한 의도적인 설계입니다. 그러나 바로 가기는 폴더를 직접 가리키고 해당 폴더에는 여러 메타데이터 파일 집합이 있으므로 이전 테이블의 메타데이터 파일을 제거할 때까지 테이블을 변환할 수 없습니다.

    Iceberg 테이블의 메타데이터 폴더에 메타데이터 파일 집합이 두 개 이상 있으면 변환이 실패합니다.

    해결 방법:

    변환된 테이블에 올바른 버전의 테이블이 반영되도록 하려면 다음을 수행합니다.

    • 동일한 폴더에 둘 이상의 Iceberg 테이블을 저장하지 않는지 확인합니다.
    • 테이블을 다시 만들기 전에 삭제한 후 Iceberg 테이블 폴더의 내용을 정리합니다.
  • 메타데이터 변경 내용이 즉시 반영되지 않음

    열 추가, 열 삭제, 열 이름 바꾸기 또는 열 형식 변경과 같이 Iceberg 테이블을 메타데이터로 변경하는 경우 데이터 행 추가와 같이 데이터가 변경될 때까지 테이블을 다시 변환할 수 없습니다.

    최신 메타데이터 변경 내용을 포함하는 올바른 최신 메타데이터 파일을 선택하는 수정 작업을 진행 중입니다.

    해결 방법:

    Iceberg 테이블을 스키마를 변경한 후 데이터 행을 추가하거나 다른 변경 내용을 적용합니다. 변경된 후에는 Fabric에서 테이블의 최신 보기를 새로 고치고 볼 수 있습니다.

  • 지역 가용성 제한

    이 기능은 아직 다음 지역에서 사용할 수 없습니다.

    • 카타르 중부
    • 노르웨이 서부

    해결 방법:

    다른 지역의 패브릭 용량에 연결된 작업 영역은 이 기능을 사용할 수 있습니다. Microsoft Fabric을 사용할 수 있는 지역의 전체 목록을 참조하세요.

  • 프라이빗 링크가 지원되지 않음

    이 기능은 현재 프라이빗 링크가 사용하도록 설정된 테넌트 또는 작업 영역에서 지원되지 않습니다.

    이 제한을 제거하기 위해 개선 작업을 진행하고 있습니다.

  • OneLake 바로 가기는 동일한 지역이어야 합니다.

    OneLake 위치를 가리키는 바로 가기와 함께 이 기능을 사용하는 데 일시적으로 제한이 있습니다. 바로 가기의 대상 위치는 바로 가기 자체와 동일한 지역에 있어야 합니다.

    이 요구 사항을 제거하기 위해 개선 작업을 진행하고 있습니다.

    해결 방법:

    다른 레이크하우스의 빙산 테이블에 대한 OneLake 바로 가기가 있는 경우 다른 레이크하우스가 동일한 지역의 용량과 연결되어 있는지 확인합니다.

  • 특정 Iceberg 파티션 변환 형식은 지원되지 않습니다.

    현재 Iceberg 파티션 형식bucket[N]truncate[W]void 지원되지 않습니다.

    변환되는 Iceberg 테이블에 이러한 파티션 변환 형식이 포함된 경우 Delta Lake 형식으로의 가상화는 성공하지 않습니다.

    이 제한을 제거하기 위해 개선 작업을 진행하고 있습니다.