Object Storage Scanner の使用例
- 印刷する
- PDF
Object Storage Scanner の使用例
- 印刷する
- PDF
記事の要約
この要約は役に立ちましたか?
ご意見ありがとうございます
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
ファイル構造
- すべてのファイルは同じスキーマで構成され、以下はスキーマとデータのサンプルです。
date | area_code | area_name | measure_center_code | measure_center_name | fine_dust_per_hour | fine_dust_per_day | ultrafine_dust_per_day | ozone_ppm | nitrogen_dioxide_concentration_ppm | carbon_monoxide_concentration_ppm | sulfurous_acid_gas_concentration_ppm |
---|---|---|---|---|---|---|---|---|---|---|---|
202210302300 | 100 | downtown | 111123 | junggu | 69 | 59 | 49 | 0.013 | 0.064 | 0.8 | 0.004 |
202210302300 | 100 | downtown | 111121 | junggu-2 | 82 | 59 | 56 | 0.008 | 0.074 | 0.8 | 0.003 |
202210302300 | 100 | downtown | 111131 | yongsangu | 68 | 58 | 64 | 0.028 | 0.037 | 0.7 | 0.003 |
スキャナー作成と実行
コネクション作成
名前: (atmosphere-bucket-connection)
データタイプ: (Object Storage)
バケット: (保存したバケット名)
スキャナー作成
データタイプ: (Object Storage)
コネクション: (atmosphere-bucket-connection)
パス: (未入力)
実行周期: (オンデマンド)
パターン: (含む:*.csv)
分類子: (未入力)
データベース: (default)
prefix: (未入力)
出力データ: (テーブル定義アップデート)
名前: atmosphere-scanner
- パターン: パターンに含む/除外のファイル形式を使用すると目的のファイルのみスキャンが可能で、使用しない場合はすべてのファイルをスキャンします。
- 分類子: 分類子を指定(選択)しない場合は Data Catalog内部の分類子によってスキーマを決定し、ユーザーが定義した分類子を追加する場合は追加した分類子を優先してスキーマ推論を試みます。
- パス: バケット内の特定のパスを指定すると、そのサブパスのデータ基準でスキーマを推論します。入力しない場合はサブバケットのすべてのパスをスキャンします。
参考
Object Storage暗号化バケットを使用するには、暗号化バケットを新規作成してパスを指定した場合のカタログを Reloadする必要があります。(初回1回)
スキャナー実行
- 実行待機中のスキャナーの [実行] ボタンを押してスキャンを開始します。
- 実行を開始する ステータスのスキャナーは、スキャン完了と同時に実行待機 ステータスに変更されます。
- 実行履歴タブで結果を確認でき、スキーマは Tableメニューで確認できます。
スキャン動作時のテーブル/パーティションの選定方法
- スキャナーはユーザーが指定した Object Storage内のバケット/パス上のファイルにアクセスしてファイルの一部を読み取り、ファイルの形式と内部スキーマを類推して meta dataを作成します。
スキャン処理ルール
- ファイルパースとスキーマを類推
- ユーザーが指定したバケット/パス上のすべてのファイルに対して順次アクセスし、ファイルの最初の1MBを読み取ります。
- parquet、xml、json、csvなどのシステムの Classifierを介してファイルをパースし、内部スキーマを類推します。
- ただし、 ユーザー定義 Classifierを Scannerに設定した場合、ユーザー定義 Classifierをシステム Classifierより優先してパースを試行します。
- ファイルパースに失敗した場合は以下の1MBを読み取り、同様にパースを試行します。最大10MBまでファイルを読み取ります。
- 個別ファイルをディレクトリ単位でマージ
- 複数の個別ファイルのスキーマが類似する場合、類似したスキーマの割合が70%以上の場合
- 複数の個別ファイルのタイプが同様
- 類似したスキーマ間のカラムはマージし、類似しないスキーマのカラムは無視する
- 個別ディレクトリを上位ディレクトリ単位でマージ
- 複数の個別ディレクトリのパス情報に含まれたパーティション情報を有効にする
- 複数の個別ディレクトリのスキーマが類似する場合、類似したスキーマの割合が70%以上の場合
- 複数の個別ディレクトリのタイプが同様
- 類似したスキーマ間のカラムはマージし、類似しないスキーマのカラムは無視する
スキャナーの実行結果
追加テーブル | 追加パーティション | スキーマ |
---|---|---|
atmosphere-data | atmosphere_data:partition_0/year/month | date (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) |
スキャンサポートのファイルタイプ
- Object Storageスキャナーでサポートするファイル Content-Typeは、以下の通りです
text/csv
text/tab-separated-values
text/xml
application/xml
application/json
application/x-ndjson
application/octet-stream
binary/octet-stream
application/parquet
application/x-parquet
application/orc
application/x-orc
application/avro
application/vnd.apache.avro
application/gzip
application/x-gzip
application/x-bzip2
この記事は役に立ちましたか?