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%以上の場合
    • 複数の個別ファイルのタイプが同様
    • 類似したスキーマ間のカラムはマージし、類似しないスキーマのカラムは無視する

    image

    1. 個別ディレクトリを上位ディレクトリ単位でマージ
    • 複数の個別ディレクトリのパス情報に含まれたパーティション情報を有効にする
    • 複数の個別ディレクトリのスキーマが類似する場合、類似したスキーマの割合が70%以上の場合
    • 複数の個別ディレクトリのタイプが同様
    • 類似したスキーマ間のカラムはマージし、類似しないスキーマのカラムは無視する
      image

    スキャナーの実行結果

    追加テーブル追加パーティションスキーマ
    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.