# Avro パーサー関数 Treasure Data インテグレーション用の Avro パーサープラグインは、Avro バイナリデータを含むファイルをパースします。以下の Treasure Data インテグレーションが Avro パーサーをサポートしています: * [SFTP (version 1)](/int/sftp-server-import-integration) * [Amazon S3 v2](/int/amazon-s3-import-integration-v2) * [Box](/int/box-import-integration) * [OneDrive](/int/onedrive-import-integration) * [Microsoft Azure](/int/microsoft-azure-blob-storage-import-integration) * [FTP](/int/ftp-import-integration-cli) Treasure Data Avro パーサーは以下の圧縮コーデックをサポートしています: * Deflate * Snappy パーサーは Treasure Data Console または Treasure Data CLI のいずれかから使用できます。 ## Treasure Data Console からの Avro パーサー関数の使用 Treasure Data Console で Avro パーサー関数を使用するには、サポートされているインテグレーションのいずれかに対して認証を作成する必要があります。その後、その認証を使用してソースを作成できます。ソースの作成プロセス中に、Avro ファイル内のデータを調整またはプレビューする機会があります。 Create Source インターフェースのステップ 3「Data Settings」で、TD Console は自動的に Avro パーサーを選択するはずです。選択されない場合は、**Parser > Type** ドロップダウンメニューから手動で選択できます。 ![](/assets/avrodatasettingsparserselect.743711139ccddef7220961a76e18208cf96ec42b79d0edf6b3deebc878c5170a.ef656343.png) 削除アイコンを使用して、特定の行がインポートされないようにするオプションもあります。 ![](/assets/avrodatasettingsrowdeleteoption.6bc13a70332f17823e6358171b20ce3be3b06468eca93a021e95c02beb295bee.ef656343.png) Create Source インターフェースのステップ 5「Data Preview」で、TD Console はデータのプレビューを表示します。 ![](/assets/avrodatapreview.88dc4d96af05add664219cff4c3fcea81767d32205df4f397d724e970fdb8d40.ef656343.png) ## Treasure Data CLI からの Avro パーサー関数の使用 Treasure Data CLI を使用すると、td connector コマンドを使用してコマンドラインから Avro データをインポートできます。このコマンドは `YAML` 形式の設定ファイルを入力として受け取ります。たとえば、サンプルファイル [users.avro](./sample-data/users.avro) を使用して、FTP サイトからサンプルファイルをインポートするための `importAvroFTP.yml` という名前のファイルを作成できます。設定ファイルは次のようになります: ```bash in: type: ftp host: 10.100.100.10 port: 21 user: user1 password: "password123" path_prefix: /misc/users.avro parser: type: avro columns: - {name: name, type: string} - {name: favorite_number, type: long} - {name: favorite_color, type: string} out: mode: append ``` **Avro インポート用の列を手動で定義する** ファイルの **`columns`** セクションでは、`name`、`type`、および(timestamp の場合)format のキーと値のペアを指定して、Avro ファイルのスキーマを定義できます。 **列配列のキーと値のペア** | 列 | 説明 | | --- | --- | | `name` | 列の名前。 | | `type` | 列の型:- `boolean` — true または false - `long` — 64 ビット符号付き整数 - `double` — 64 ビット浮動小数点数 - `string` - `timestamp` — ナノ秒精度の日付と時刻 - `json` | | `format` | 列の型が `timestamp` の場合にのみ有効。 | 列を定義する方法の例を以下に示します: ```yaml - {name: first_name, type: string} - {name: favorite_number, type: long} - {name: last_access, type: timestamp, format: '%Y-%m-%d %H:%M:%S.%N'} ``` 設定ファイルをセットアップしたら、`td connector` コマンドを使用してインポートを実行します。以下はその例です。 以下の例では、[users.avro](./sample-data/users.avro) ファイルが FTP サイトで利用可能であることを前提としています。また、手動インポートプロセスが機能するために、importAvroFTP.yml ファイルに time 列が追加されています。 ```yaml importAvroFTP.yml in: type: ftp host: 10.100.100.10 port: 21 user: user1 password: "password123" path_prefix: /misc/users.avro parser: type: avro columns: - {name: name, type: string} - {name: favorite_number, type: long} - {name: favorite_color, type: string} - {name: time, type: timestamp} out: mode: append ``` ```bash td connector:preview importAvroFTP.yml ``` ```bash td connector:issue importAvroFTP.yml \ --database wt_avro_db \ --table wt_avro_table --auto-create-table ``` テーブルの内容を確認するには、TD Query コマンドを使用できます。query コマンドの出力は冗長なため、以下の例では応答の多くが省略されています: ```bash td query -d wt_avro_db -T presto -w 'select * from wt_avro_table' ``` **パーサーに Avro インポート用の列を推測させる** パーサーに特定のファイルで使用されている列とデータ型を推測させるオプションもあります。パーサーは、ここに示す変換テーブルに基づいて「推測」を行います。 **Avro から TD へのデフォルト型変換** | **Avro 型** | **TD データ型** | | --- | --- | | String | String | | Bytes | String | | Fixed | String | | Enum | String | | Null | String | | Int | Long | | Long | Long | | Float | Double | | Double | Double | | Boolean | Boolean | | Map | JSON | | Array | JSON | | Record | JSON | ## S3 から Avro データをインポートするための設定例 ```yaml importAvroS3.yml in: type: s3 access_key_id: secret_access_key: bucket: path_prefix: users.avro parser: type: avro columns: - {name: name, type: string} - {name: favorite_number, type: long} - {name: favorite_color, type: string} out: {mode: append} exec: {} ``` **S3 でホストされている Avro ファイルに対して td connector:guess を実行する例** ```bash $ td connector:guess config.yml -o load.yml ``` ```yaml --- in: type: s3 access_key_id: secret_access_key: bucket: path_prefix: users.avro parser: charset: UTF-8 newline: CR type: avro columns: - {name: name, type: string} - {name: favorite_number, type: long} - {name: favorite_color, type: string} out: {} exec: {} filters: - from_value: {mode: upload_time} to_column: {name: time} type: add_time ```