Treasure Data インテグレーション用の Avro パーサープラグインは、Avro バイナリデータを含むファイルをパースします。以下の Treasure Data インテグレーションが Avro パーサーをサポートしています:
Treasure Data Avro パーサーは以下の圧縮コーデックをサポートしています:
- Deflate
- Snappy
パーサーは Treasure Data Console または Treasure Data CLI のいずれかから使用できます。
Treasure Data Console で Avro パーサー関数を使用するには、サポートされているインテグレーションのいずれかに対して認証を作成する必要があります。その後、その認証を使用してソースを作成できます。ソースの作成プロセス中に、Avro ファイル内のデータを調整またはプレビューする機会があります。
Create Source インターフェースのステップ 3「Data Settings」で、TD Console は自動的に Avro パーサーを選択するはずです。選択されない場合は、Parser > Type ドロップダウンメニューから手動で選択できます。

削除アイコンを使用して、特定の行がインポートされないようにするオプションもあります。

Create Source インターフェースのステップ 5「Data Preview」で、TD Console はデータのプレビューを表示します。

Treasure Data CLI を使用すると、td connector コマンドを使用してコマンドラインから Avro データをインポートできます。このコマンドは YAML 形式の設定ファイルを入力として受け取ります。たとえば、サンプルファイル users.avro を使用して、FTP サイトからサンプルファイルをインポートするための 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}
out:
mode: appendAvro インポート用の列を手動で定義する
ファイルの columns セクションでは、name、type、および(timestamp の場合)format のキーと値のペアを指定して、Avro ファイルのスキーマを定義できます。
列配列のキーと値のペア
| 列 | 説明 |
|---|---|
name | 列の名前。 |
type | 列の型:
|
format | 列の型が timestamp の場合にのみ有効。 |
列を定義する方法の例を以下に示します:
- {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 ファイルが FTP サイトで利用可能であることを前提としています。また、手動インポートプロセスが機能するために、importAvroFTP.yml ファイルに time 列が追加されています。
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: appendtd connector:preview importAvroFTP.ymltd connector:issue importAvroFTP.yml \
--database wt_avro_db \
--table wt_avro_table --auto-create-tableテーブルの内容を確認するには、TD Query コマンドを使用できます。query コマンドの出力は冗長なため、以下の例では応答の多くが省略されています:
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 |
in:
type: s3
access_key_id: <access key>
secret_access_key: <secret access key>
bucket: <bucket name>
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 を実行する例
$ td connector:guess config.yml -o load.yml---
in:
type: s3
access_key_id: <access key>
secret_access_key: <secret access key>
bucket: <bucket name>
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