Object Storage Scanner 사용 예시
    • PDF

    Object Storage Scanner 사용 예시

    • PDF

    Article Summary

    VPC 환경에서 이용 가능합니다.

    시나리오 개요

    Object Storage Bucket을 대상으로 스캐너를 생성하여 사용자가 원하는 소스 데이터의 스키마를 추론하고 테이블을 생성하는 과정을 설명합니다.

    소스 데이터

    Object Storage에 저장된 소스 데이터는 대기오염 측정 데이터로 일시, 측정소명, 오존농도, 아황산가스농도 등 다양한 측정 정보를 갖고 있습니다. Hadoop File System에서 사용하는 파티션 구조로 저장을 하고 있으며, 파일들은 연/월 별로 나뉘어 저장되어 있습니다.

    폴더 구조

    /atmosphere-data
    ├── year=2022
    │   ├── month=10
    │   │   └── atomosphere_data_2022.10.csv
    │   ├── month=11
    │   │   └── atomosphere_data_2022.11.csv
    │   └── month=12
    │       └── atomosphere_data_2022.12.csv
    └── year=2023
        ├── month=01
        │   └── atomosphere_data_2023.01.csv
        ├── month=02
        │   └── atomosphere_data_2023.02.csv
        └── month=03
            └── atomosphere_data_2023.03.csv
    

    파일 구조

    • 모든 파일은 동일한 스키마로 구성되어있고 아래는 스키마 및 데이터 샘플 입니다.
    datearea_codearea_namemeasure_center_codemeasure_center_namefine_dust_per_hourfine_dust_per_dayultrafine_dust_per_dayozone_ppmnitrogen_dioxide_concentration_ppmcarbon_monoxide_concentration_ppmsulfurous_acid_gas_concentration_ppm
    202210302300100downtown111123junggu6959490.0130.0640.80.004
    202210302300100downtown111121junggu-28259560.0080.0740.80.003
    202210302300100downtown111131yongsangu6858640.0280.0370.70.003

    스캐너 생성 및 실행

    커넥션 생성

     이름 : (atmosphere-bucket-connection)
     데이터유형 : (Object Storage)
     버킷 : (저장된 버킷명)
    

    스캐너 생성

       데이터유형 : (Object Storage)
       커넥션 : (atmosphere-bucket-connection)
       경로 : (미입력)
       실행주기 : (온디맨드)
       패턴 : (포함:*.csv)
       분류자 : (미입력)
       데이터베이스 : (default)
       prefix : (미입력)
       출력 데이터 : (테이블 정의 업데이트)
       이름 : atmosphere-scanner
    
    • 패턴: 패턴에 포함/제외 파일 형식을 사용하면 원하는 파일만 스캔이 가능하며 사용 안 할 경우 모든 파일이 스캔 됩니다.
    • 분류자: 분류자를 지정(선택)하지 않으면 Data Catalog 내부 분류자에 의해 스키마를 결정하며, 사용자가 정의한 분류자를 추가하면 추가한 분류자를 우선하여 스키마 추론을 시도합니다.
    • 경로: 버킷 내 특정 경로를 지정하면 지정한 경로 하위의 데이터를 기준으로 스키마를 추론합니다. 입력하지 않을 경우 버킷 하위의 모든 경로를 스캔합니다.

    스캐너 실행

    • 실행 대기중인 스캐너를 [실행] 버튼을 눌러 스캔을 시작합니다.
    • 실행 시작 상태인 스캐너는 스캔이 완료됨과 동시에 실행 대기 상태로 변경됩니다.
    • 실행 내역 탭에서 결과를 확인할 수 있으며, 스키마는 Table 메뉴에서 확인할 수 있습니다.

    스캔 동작 시 테이블/파티션 선정 방법

    • 스캐너는 사용자가 지정한 Object Storage 내 버킷/경로 상의 파일에 접근하여 파일의 일부를 읽고 파일의 형식 및 내부 스키마를 유추하여 meta data를 생성합니다.

    스캔 처리 규칙

    1. 파일 파싱 및 스키마 유추
    • 사용자가 지정한 버킷/경로 상의 모든 파일에 대해 순차적으로 접근하여 파일의 첫 1MB를 읽습니다.
    • parquet, xml, json, csv 등의 시스템 Classifier를 통해 파일을 파싱하고 내부 스키마를 유추합니다.
    • 단, 사용자 정의 Classifier를 Scanner에 설정한 경우, 사용자 정의 Classifier를 시스템 Classifier 보다 우선하여 파싱을 시도합니다.
    • 파일 파싱에 실패한 경우, 다음 1MB를 읽고 동일하게 파싱을 시도합니다. 최대 10MB 까지 파일을 읽습니다.
    1. 개별 파일을 디렉토리 단위로 병합
    • 개별 파일들의 스키마가 유사할 경우, 유사한 스키마 비율이 70% 이상일 경우
    • 개별 파일들의 타입이 동일
    • 유사한 스키마 간의 컬럼은 병합되며 유사하지 않은 스키마의 컬럼은 무시됨

    obj_scanner_scan_policy

    1. 개별 디렉토리를 상위 디렉토리 단위로 병합
    • 개별 디렉토리들의 경로 정보에 포함된 파티션 정보가 유효해야 함
    • 개별 디렉토리들의 스키마가 유사할 경우, 유사한 스키마 비율이 70% 이상일 경우
    • 개별 디렉토리들의 타입이 동일
    • 유사한 스키마 간의 컬럼은 병합되며 유사하지 않은 스키마의 컬럼은 무시됨

    obj_scanner_foler_merge_policy

    스캐너 실행 결과

    추가 테이블추가 파티션스키마
    atmosphere-dataatmosphere_data:partition_0/year/monthdate (bigint ) date (bigint )
    area_code (double)
    area_name (string)
    measure_center_code (double)
    measure_center_name (string)
    fine_dust_per_hour (double)
    fine_dust_per_day (double)
    ultrafine_dust_per_day (double)
    ozone_ppm (double)
    nitrogen_dioxide_concentration_ppm (double)
    carbon_monoxide_concentration_ppm (double)
    sulfurous_acid_gas_concentration_ppm (double)

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.