Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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 空いているので、自作プラグインの紹介とかもっと皆さん書いたら良いと思います!

sonots
A Ruby, Fluentd, and Chainer Committer. SRE Engineer. Qiitaは小ネタの投稿場所として利用しています。業務コードで、なぜそういう書き方をしているのか解説をQiitaに書いて、コードにはQiitaへのリンクを張る、という使い方をしていることが多いです(自己紹介じゃない)
https://medium.com/@sonots
zozotech
70億人のファッションを技術の力で変えていく
https://tech.zozo.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away