Skip to content
Last updated

Avro パーサー関数

Treasure Data インテグレーション用の Avro パーサープラグインは、Avro バイナリデータを含むファイルをパースします。以下の Treasure Data インテグレーションが Avro パーサーをサポートしています:

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 ドロップダウンメニューから手動で選択できます。

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

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

Treasure Data CLI からの Avro パーサー関数の使用

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: append

Avro インポート用の列を手動で定義する

ファイルの columns セクションでは、nametype、および(timestamp の場合)format のキーと値のペアを指定して、Avro ファイルのスキーマを定義できます。

列配列のキーと値のペア

説明
name列の名前。
type列の型:
  • boolean — true または false
  • long — 64 ビット符号付き整数
  • double — 64 ビット浮動小数点数
  • string
  • timestamp — ナノ秒精度の日付と時刻
  • json
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 列が追加されています。

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
td connector:preview importAvroFTP.yml
td 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 データ型
StringString
BytesString
FixedString
EnumString
NullString
IntLong
LongLong
FloatDouble
DoubleDouble
BooleanBoolean
MapJSON
ArrayJSON
RecordJSON

S3 から Avro データをインポートするための設定例

importAvroS3.yml
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