LoginSignup
10
8

More than 5 years have passed since last update.

embulk-parser-none および embulk-filter-stdout プラグインのご紹介

Last updated at Posted at 2015-12-08

Embulk Advent Calendar 2015の9日目の記事です。

こんにちは @sonots です。3連投すみません。昨日に引き続き、淡々と拙作のプラグインの紹介をしようと思います。

本日紹介するのは embulk-parser-none および embulk-filter-stdout プラグインです。

embulk-parser-none

URL: https://github.com/sonots/embulk-parser-none

何も parse せず、payload カラム(デフォルト)として保存するだけの便利プラグインです。Fluentd の none parser からパクっています。

file input プラグインと、自分の後ろの席の civitaspo が作っている embulk-output-hdfs を使って、ローカルファイルをそのまま HDFS にアップロードしたくて作成しました。

使い方は、以下のように書いて、

in:
  type: file
  path_prefix: example.txt
  parser:
    type: none
    column_name: payload

例えば、example.txt の内容が以下のようになっている場合、

foo bar baz
foo bar baz

このように取り込まれます。

+----------------+
| payload:string |
+----------------+
| foo bar baz    |
| foo bar baz    |
+----------------+

書き出す場合、csv formatter を使ってもらって、以下のように指定すれば

out:
  type: file
  path_prefix: example.txt
  sequence_format: ""
  file_ext: .out
  formatter:
    type: csv
    delimiter: 0
    quote_policy: NONE
    header_line: false

元の内容のまま吐き出されます。やった!ただの cp ができた!

foo bar baz
foo bar baz

embulk-filter-stdout

URL: https://github.com/sonots/embulk-filter-stdout

embulk の records を標準出力に吐き出すだけのデバグ用のプラグインです。アイデアは Fluentd の stdout filter からパクっています

in:
  type: file
  path_prefix: example.csv
  parser:
    type: csv
    charset: UTF-8
    newline: CRLF
    null_string: 'NULL'
    skip_header_lines: 1
    comment_line_marker: '#'
    columns:
      - {name: time,  type: timestamp, format: "%Y-%m-%d"}
      - {name: id, type: long}
      - {name: name, type: string}
      - {name: score, type: double}
filters:
  - type: stdout
out:
  type: file
  path_prefix: example.txt
  sequence_format: ""
  file_ext: .out
  formatter:
    type: csv
    quote_policy: NONE

他の filter プラグインの結果を確認するために、途中に差し込んだりして利用できます。大分捗ります。

おわりに

一通り、拙作プラグインの紹介をさせて頂きました。embulk の plugin を作りっぱなしで、ブログなどには一切書いてなかったので、Advent Calendar が良い機会になりました。良かった。

まだ Advent Calendar 空いているので、自作プラグインの紹介とかもっと皆さん書いたら良いと思います!

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8