embulk 0.4.7 → 0.4.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2f4db59dbfae683eff9877c8794fab684f562224
4
- data.tar.gz: 7969e968bae40633fb8c3d70a9ed2f80a0ee4a37
3
+ metadata.gz: ae306d06b0e181d289d3ff6d1117f0275d53d021
4
+ data.tar.gz: 5aefdda58d812bf753d41a4133e9b5500a88d9d0
5
5
  SHA512:
6
- metadata.gz: 592576af399e8f184b1b28dfa32c298fb7ff236f9d956a37e5587e073ee64af0280e481a4a568e114b04391e0cea6977b364f4d9ac03f0a1a194a12b3a7cd19e
7
- data.tar.gz: f2238b2e4c0bb06c1ad33754b86f9944845565c75ea0f36fb801fd2c1e5b1a87255a5ddbad763dc2f72b36724692cd11cd862cb05ee64827655a7ca797df408c
6
+ metadata.gz: 7ef6c84e52dadc846e6f69e0836aaaf8b18c763be94a178ed597e18d07e6583b4533b16366933a798a7391b40f88b459258b0be0255c43ae2e39e2b3666fdcee
7
+ data.tar.gz: 1808ce0b33520fc998f5bb023ab1a1d109d87152dcdc1994c32becb770178d749a7fe27dfdc27b956f61a6e9c664baeec188f1ebb9fe6e36e6a82d8f5840177a
@@ -1,6 +1,9 @@
1
1
  language: java
2
2
  jdk:
3
3
  - oraclejdk8
4
+ cache:
5
+ directories: # run "travis cache --delete" to delete caches
6
+ - $HOME/.gradle
4
7
  sudo: false
5
8
  install:
6
9
  - pip install --user sphinx
data/README.md CHANGED
@@ -28,7 +28,7 @@ The single-file package is the simplest way to try Embulk. You can download the
28
28
  Following 4 commands install embulk to your home directory:
29
29
 
30
30
  ```
31
- curl --create-dirs -o ~/.embulk/bin/embulk -L https://bintray.com/artifact/download/embulk/maven/embulk-0.4.7.jar
31
+ curl --create-dirs -o ~/.embulk/bin/embulk -L https://bintray.com/artifact/download/embulk/maven/embulk-0.4.8.jar
32
32
  chmod +x ~/.embulk/bin/embulk
33
33
  echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
34
34
  source ~/.bashrc
@@ -39,7 +39,7 @@ source ~/.bashrc
39
39
  You can assume the jar file is a .bat file.
40
40
 
41
41
  ```
42
- curl -o embulk.bat -L https://bintray.com/artifact/download/embulk/maven/embulk-0.4.5.jar
42
+ curl -o embulk.bat -L https://bintray.com/artifact/download/embulk/maven/embulk-0.4.8.jar
43
43
  ```
44
44
 
45
45
  ### Trying examples
data/bin/embulk CHANGED
@@ -1,28 +1,47 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # TODO cygwin check
4
- cygwin = false
5
-
6
3
  java_args = []
7
- while i = ARGV.find_index {|arg| arg =~ /^\-D/ }
8
- if ARGV[i] == "-D"
9
- prop_path = ARGV[i + 1]
4
+ jruby_args = []
5
+ default_optimize = false
6
+ overwrite_optimize = nil
7
+
8
+ until ARGV.empty?
9
+ v = ARGV[0]
10
+ case v
11
+ when "-J+O"
12
+ overwrite_optimize = true
13
+ ARGV.shift
14
+ when "-J-O"
15
+ overwrite_optimize = false
16
+ ARGV.shift
17
+ when "-J"
18
+ prop_path = ARGV[1]
10
19
  unless prop_path
11
- STDERR.puts "-D option requires an option"
20
+ STDERR.puts "-J option requires an option"
12
21
  exit 1
13
22
  end
14
- ARGV.slice!(i, 2)
23
+ props = File.read(prop_path)
24
+ java_props = props.split("\n").reject {|prop| prop.strip.empty? }
25
+ java_args = java_props + java_args
26
+ ARGV.shift
27
+ ARGV.shift
28
+ when /-J(.*)/
29
+ java_args << v[2..-1]
30
+ ARGV.shift
31
+ when /-R(.*)/
32
+ jruby_args << v[2..-1]
33
+ ARGV.shift
34
+ when "run"
35
+ default_optimize = true
36
+ ARGV.shift
37
+ break
15
38
  else
16
- java_args << ARGV[i][2..-1]
17
- ARGV.slice!(i)
39
+ break
18
40
  end
19
41
  end
20
42
 
21
- if prop_path
22
- props = File.read(prop_path)
23
- java_props = props.split("\n").reject {|prop| prop.strip.empty? }
24
- java_args = java_props + java_args
25
- end
43
+ # TODO cygwin check
44
+ cygwin = false
26
45
 
27
46
  java_cmd = ENV['JAVACMD']
28
47
  unless java_cmd
@@ -50,10 +69,17 @@ unless jruby_complete
50
69
  raise SystemExit.new(1)
51
70
  end
52
71
 
72
+ if overwrite_optimize == true || (default_optimize == true && overwrite_optimize != false)
73
+ java_args = %w[-XX:+AggressiveOpts -XX:+UseConcMarkSweepGC] + java_args
74
+ else
75
+ java_args = %w[-XX:+AggressiveOpts -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Xverify:none] + java_args
76
+ end
77
+
53
78
  # java ... -jar ruby-complete.jar $EMBULK_HOME/lib/embulk/command/embulk.rb "$@"
54
79
  cmdline = [java_cmd]
55
80
  cmdline.concat java_args
56
81
  cmdline << '-jar' << File.join(classpath_dir, jruby_complete)
82
+ cmdline.concat jruby_args
57
83
  cmdline << File.join(lib_dir, 'embulk/command/embulk.rb')
58
84
  cmdline.concat ARGV
59
85
  exec *cmdline
@@ -12,7 +12,7 @@ def release_projects = [project(":embulk-core"), project(":embulk-standards")]
12
12
 
13
13
  allprojects {
14
14
  group = 'org.embulk'
15
- version = '0.4.7'
15
+ version = '0.4.8'
16
16
 
17
17
  apply plugin: 'java'
18
18
  apply plugin: 'maven-publish'
@@ -244,8 +244,14 @@ task set_version << {
244
244
  File ruby_ver = file('lib/embulk/version.rb')
245
245
  ruby_ver.write(ruby_ver.getText().replaceFirst("VERSION = '(\\d+)(\\.\\d+){2}'", "VERSION = '${to}'"))
246
246
 
247
- File readme_ver = file('README.md')
248
- readme_ver.write(readme_ver.getText().replaceFirst('embulk-(\\d+)(\\.\\d+){2}', "embulk-${to}"))
247
+ List<String> docs = [
248
+ 'README.md',
249
+ 'embulk-docs/src/recipe/scheduled-csv-load-to-elasticsearch-kibana4.rst'
250
+ ]
251
+ docs.each() { path ->
252
+ File doc = file(path)
253
+ doc.write(doc.getText().replaceAll('embulk-(\\d+)(\\.\\d+){2}', "embulk-${to}"))
254
+ }
249
255
 
250
256
  file("embulk-docs/src/release/release-${to}.rst").append("")
251
257
  "git add embulk-docs/src/release/release-${to}.rst".execute().waitFor()
@@ -158,7 +158,7 @@ public class Runner
158
158
  ConfigSource resumeConfig = loadYamlConfig(resumePath);
159
159
  ResumeState resume = resumeConfig.loadConfig(ResumeState.class);
160
160
 
161
- ExecSession exec = newExecSession(config);
161
+ //ExecSession exec = newExecSession(config); // not necessary
162
162
  LocalExecutor local = injector.getInstance(LocalExecutor.class);
163
163
  local.cleanup(config, resume);
164
164
 
@@ -14,7 +14,7 @@ public class VerticalPreviewPrinter
14
14
  public VerticalPreviewPrinter(PrintStream out, ModelManager modelManager, Schema schema)
15
15
  {
16
16
  super(out, modelManager, schema);
17
- this.format = "%" + maxColumnNameLength(schema) + "s (%" + maxColumnTypeNameLength(schema)+ "s) : %s\n";
17
+ this.format = "%" + maxColumnNameLength(schema) + "s (%" + maxColumnTypeNameLength(schema)+ "s) : %s%n";
18
18
  }
19
19
 
20
20
  private static int maxColumnNameLength(Schema schema)
@@ -39,7 +39,7 @@ public class VerticalPreviewPrinter
39
39
  protected void printRecord(String[] values) throws IOException
40
40
  {
41
41
  count++;
42
- out.format("*************************** %d ***************************\n", count);
42
+ out.format("*************************** %d ***************************%n", count);
43
43
  for (int i=0; i < schema.getColumnCount(); i++) {
44
44
  out.format(format, schema.getColumnName(i), schema.getColumnType(i), values[i]);
45
45
  }
@@ -2,7 +2,7 @@ package org.embulk.spi.time;
2
2
 
3
3
  public interface JRubyTimeParserHelper
4
4
  {
5
- public long strptime(String text) throws TimestampParseException;
5
+ public long strptimeUsec(String text) throws TimestampParseException;
6
6
 
7
7
  public String getZone();
8
8
  }
@@ -48,7 +48,7 @@ public class TimestampFormatter
48
48
  public String format(Timestamp value)
49
49
  {
50
50
  // TODO optimize by using reused StringBuilder
51
- dateFormat.setDateTime(new DateTime(value.toEpochMilli(), timeZone));
51
+ dateFormat.setDateTime(new DateTime(value.getEpochSecond()*1000, timeZone));
52
52
  dateFormat.setNSec(value.getNano());
53
53
  return dateFormat.format(null);
54
54
  }
@@ -41,7 +41,7 @@ public class TimestampParser
41
41
 
42
42
  public Timestamp parse(String text) throws TimestampParseException
43
43
  {
44
- long localMillis = helper.strptime(text);
44
+ long localUsec = helper.strptimeUsec(text);
45
45
  String zone = helper.getZone();
46
46
 
47
47
  DateTimeZone timeZone = defaultTimeZone;
@@ -53,8 +53,10 @@ public class TimestampParser
53
53
  }
54
54
  }
55
55
 
56
- long milli = timeZone.convertLocalToUTC(localMillis, false);
56
+ long localSec = localUsec / 1000000;
57
+ long usec = localUsec % 1000000;
58
+ long sec = timeZone.convertLocalToUTC(localSec*1000, false) / 1000;
57
59
 
58
- return Timestamp.ofEpochMilli(milli);
60
+ return Timestamp.ofEpochSecond(sec, usec * 1000);
59
61
  }
60
62
  }
@@ -32,21 +32,36 @@ public class TestTimestampFormatterParser
32
32
  public void testSimpleFormat() throws Exception
33
33
  {
34
34
  ConfigSource config = Exec.newConfigSource()
35
- .set("time_format", "%Y-%m-%d %H:%M:%S %Z");
35
+ .set("time_format", "%Y-%m-%d %H:%M:%S.%6N %Z");
36
36
  FormatterTestTask task = config.loadConfig(FormatterTestTask.class);
37
37
 
38
38
  TimestampFormatter formatter = task.getTimeFormat().newFormatter(task);
39
- assertEquals("2014-11-19 02:46:29 UTC", formatter.format(Timestamp.ofEpochSecond(1416365189)));
39
+ assertEquals("2014-11-19 02:46:29.123456 UTC", formatter.format(Timestamp.ofEpochSecond(1416365189, 123456*1000)));
40
40
  }
41
41
 
42
42
  @Test
43
43
  public void testSimpleParse() throws Exception
44
44
  {
45
45
  ConfigSource config = Exec.newConfigSource()
46
- .set("time_format", "%Y-%m-%d %H:%M:%S %Z");
46
+ .set("time_format", "%Y-%m-%d %H:%M:%S.%N %Z");
47
47
  ParserTestTask task = config.loadConfig(ParserTestTask.class);
48
48
 
49
49
  TimestampParser parser = task.getTimeFormat().newParser(task);
50
- assertEquals(Timestamp.ofEpochSecond(1416365189), parser.parse("2014-11-19 02:46:29 UTC"));
50
+ assertEquals(Timestamp.ofEpochSecond(1416365189, 123456*1000), parser.parse("2014-11-19 02:46:29.123456 UTC"));
51
+ }
52
+
53
+ @Test
54
+ public void testUnixtimeFormat() throws Exception
55
+ {
56
+ ConfigSource config = Exec.newConfigSource()
57
+ .set("time_format", "%s");
58
+
59
+ FormatterTestTask ftask = config.loadConfig(FormatterTestTask.class);
60
+ TimestampFormatter formatter = ftask.getTimeFormat().newFormatter(ftask);
61
+ assertEquals("1416365189", formatter.format(Timestamp.ofEpochSecond(1416365189)));
62
+
63
+ ParserTestTask ptask = config.loadConfig(ParserTestTask.class);
64
+ TimestampParser parser = ptask.getTimeFormat().newParser(ptask);
65
+ assertEquals(Timestamp.ofEpochSecond(1416365189), parser.parse("1416365189"));
51
66
  }
52
67
  }
@@ -11,6 +11,7 @@ https://github.com/embulk/embulk
11
11
  .. toctree::
12
12
  :maxdepth: 2
13
13
 
14
+ recipe
14
15
  release
15
16
 
16
17
  * `JavaDoc <javadoc/index.html>`_
@@ -0,0 +1,8 @@
1
+ Recipes
2
+ ==================================
3
+
4
+ .. toctree::
5
+ :maxdepth: 1
6
+
7
+ recipe/scheduled-csv-load-to-elasticsearch-kibana4
8
+
@@ -0,0 +1,153 @@
1
+ Scheduled bulk data loading to Elasticsearch + Kibana 4 from CSV files
2
+ ==================================
3
+
4
+ .. contents::
5
+ :local:
6
+ :depth: 2
7
+
8
+ This article shows how to:
9
+
10
+ * Bulk load CSV files to Elasticsearch.
11
+ * Visualize the data with Kibana interactively.
12
+ * Schedule the data loading every hour using cron.
13
+
14
+ This guide assumes you are using Ubuntu 12.0 Precise or Mac OS X.
15
+
16
+ Setup Elasticsearch and Kibana 4
17
+ ------------------
18
+
19
+ Step 1. Download and start Elasticsearch.
20
+ ~~~~~~~~~~~~~~~~~~
21
+
22
+ You can find releases from the `Elasticsearch website <http://www.elasticsearch.org/download/>`_.
23
+ For the smallest setup, you can unzip the package and run `./bin/elasticsearch` command:
24
+
25
+ .. code-block:: console
26
+
27
+ $ wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.4.zip
28
+ $ unzip elasticsearch-1.4.4.zip
29
+ $ cd elasticsearch-1.4.4
30
+ $ ./bin/elasticsearch
31
+
32
+ Step 2. Download and unzip Kibana:
33
+ ~~~~~~~~~~~~~~~~~~
34
+
35
+ You can find releases from the `Kibana website <http://www.elasticsearch.org/overview/kibana/installation/>`_. Open a new console and run following commands:
36
+
37
+ .. code-block:: console
38
+
39
+ $ wget https://download.elasticsearch.org/kibana/kibana/kibana-4.0.0-linux-x64.tar.gz
40
+ $ tar zxvf kibana-4.0.0-linux-x64.tar.gz
41
+ $ cd kibana-4.0.0-linux-x64
42
+ $ ./bin/kibana
43
+
44
+ Note: If you're using Mac OS X, https://download.elasticsearch.org/kibana/kibana/kibana-4.0.0-darwin-x64.tar.gz is the URL to download.
45
+
46
+ Now Elasticsearch and Kibana started. Open http://localhost:5601/ using your browser to see the Kibana's graphical interface.
47
+
48
+
49
+ Setup Embulk
50
+ ------------------
51
+
52
+ Step 1. Download Embulk binary:
53
+ ~~~~~~~~~~~~~~~~~~
54
+
55
+ You can find the latest embulk binary from the `releases <https://bintray.com/embulk/maven/embulk/view#files>`_. Because Embulk is a single executable binary, you can simply download it to /usr/local/bin directory and set executable flag as following:
56
+
57
+ .. code-block:: console
58
+
59
+ $ sudo wget https://bintray.com/artifact/download/embulk/maven/embulk-0.4.8.jar -O /usr/local/bin/embulk
60
+ $ sudo chmod +x /usr/local/bin/embulk
61
+
62
+ Step 2. Install Elasticsearch plugin
63
+ ~~~~~~~~~~~~~~~~~~
64
+
65
+ You also need Elasticsearch plugin for Embulk. You can install the plugin with this command:
66
+
67
+ .. code-block:: console
68
+
69
+ $ embulk gem install embulk-output-elasticsearch
70
+
71
+ Embulk includes CSV file reader in itself. Now everything is ready to use.
72
+
73
+ Loading a CSV file
74
+ ------------------
75
+
76
+ Assuming you have a CSV files at ``./mydata/csv/`` directory. If you don't have CSV files, you can create ones using ``embulk example ./mydata`` command.
77
+
78
+ Create this configuration file and save as ``config.yml``:
79
+
80
+ .. code-block:: yaml
81
+
82
+ in:
83
+ type: file
84
+ path_prefix: ./mydata/csv/
85
+ out:
86
+ type: elasticsearch
87
+ index_name: embulk
88
+ index_type: embulk
89
+ nodes:
90
+ - host: localhost
91
+
92
+ In fact, this configuration lacks some important information. However, embulk guesses the other information. So, next step is to order embulk to guess them:
93
+
94
+ .. code-block:: console
95
+
96
+ $ embulk guess config.yml -o config-complete.yml
97
+
98
+ The generated config-complete.yml file should include complete information as following:
99
+
100
+ .. code-block:: yaml
101
+
102
+ in:
103
+ type: file
104
+ path_prefix: ./mydata/csv/
105
+ decoders:
106
+ - {type: gzip}
107
+ parser:
108
+ charset: UTF-8
109
+ newline: CRLF
110
+ type: csv
111
+ delimiter: ','
112
+ quote: '"'
113
+ escape: ''
114
+ null_string: 'NULL'
115
+ header_line: true
116
+ columns:
117
+ - {name: id, type: long}
118
+ - {name: account, type: long}
119
+ - {name: time, type: timestamp, format: '%Y-%m-%d %H:%M:%S'}
120
+ - {name: purchase, type: timestamp, format: '%Y%m%d'}
121
+ - {name: comment, type: string}
122
+ out:
123
+ type: elasticsearch
124
+ index_name: embulk
125
+ index_type: embulk
126
+ nodes:
127
+ - {host: localhost}
128
+
129
+ Now, you can run the bulk loading:
130
+
131
+ .. code-block:: console
132
+
133
+ $ embulk run config-complete.yml -o next-config.yml
134
+
135
+ Scheduling loading by cron
136
+ ------------------
137
+
138
+ At the last step, you ran embulk command with ``-o next-config.yml`` file. The ``next-config.yml`` file should include a parameter named ``last_path``:
139
+
140
+ .. code-block:: yaml
141
+
142
+ last_path: mydata/csv/sample_01.csv.gz
143
+
144
+ With this configuration, embulk loads the files newer than this file in alphabetical order.
145
+
146
+ For example, if you create ``./mydata/csv/sample_02.csv.gz`` file, embulk skips ``sample_01.csv.gz`` file and loads ``sample_02.csv.gz`` only next time. And the next next-config.yml file has ``last_path: mydata/csv/sample_02.csv.gz`` for the next next execution.
147
+
148
+ So, if you want to loads newly created files every day, you can setup this cron schedule:
149
+
150
+ .. code-block:: cron
151
+
152
+ 0 * * * * embulk run /path/to/next-config.yml -o /path/to/next-config.yml
153
+
@@ -18,4 +18,5 @@ Release Notes
18
18
  release/release-0.4.5
19
19
  release/release-0.4.6
20
20
  release/release-0.4.7
21
+ release/release-0.4.8
21
22
 
@@ -0,0 +1,15 @@
1
+ Release 0.4.8
2
+ ==================================
3
+
4
+ General Changes
5
+ ------------------
6
+
7
+ * ``spi.time.TimestampParser`` supports microseconds.
8
+ * ``spi.time.TimestampFormatter`` supports milliseconds, microseconds and nanoseconds.
9
+ * Fixed a bug at ``spi.time.TimestampParser`` that returns wrong timestamp if format string is ``%s`` which means epoch seconds (@hiroyuki-sato++)
10
+ * ``embulk`` command installed by ``gem install embulk`` sets JVM optimization flags. This behavior is same with embulk.jar updated since 0.4.6.
11
+ * ``preview`` subcommand with ``-G, --vertical`` option uses CRLF on Windows
12
+
13
+ Release Date
14
+ ------------------
15
+ 2015-02-24
@@ -7,7 +7,10 @@ import java.io.IOException;
7
7
  import java.io.OutputStream;
8
8
  import java.util.ArrayList;
9
9
  import java.util.List;
10
+ import java.util.Locale;
11
+ import java.util.IllegalFormatException;
10
12
  import org.embulk.config.Config;
13
+ import org.embulk.config.ConfigException;
11
14
  import org.embulk.config.ConfigDefault;
12
15
  import org.embulk.config.ConfigSource;
13
16
  import org.embulk.config.ConfigDiff;
@@ -46,7 +49,11 @@ public class LocalFileOutputPlugin
46
49
  PluginTask task = config.loadConfig(PluginTask.class);
47
50
 
48
51
  // validate sequence_format
49
- String.format(task.getSequenceFormat(), 0, 0);
52
+ try {
53
+ String dontCare = String.format(Locale.ENGLISH, task.getSequenceFormat(), 0, 0);
54
+ } catch (IllegalFormatException ex) {
55
+ throw new ConfigException("Invalid sequence_format: parameter for file output plugin", ex);
56
+ }
50
57
 
51
58
  return resume(task.dump(), taskCount, control);
52
59
  }
@@ -23,7 +23,7 @@ module Embulk
23
23
  end
24
24
 
25
25
  # Override
26
- def strptime(text)
26
+ def strptimeUsec(text)
27
27
  hash = Date._strptime(text, @format_string)
28
28
  unless hash
29
29
  raise Java::TimestampParseException.new
@@ -64,7 +64,7 @@ module Embulk
64
64
 
65
65
  @zone = zone
66
66
  time = Time.utc(year, mon, day, hour, min, sec, usec)
67
- return time.tv_sec * 1000 + time.tv_usec / 1000
67
+ return time.tv_sec * 1_000_000 + time.tv_usec
68
68
  end
69
69
  end
70
70
 
@@ -1,3 +1,3 @@
1
1
  module Embulk
2
- VERSION = '0.4.7'
2
+ VERSION = '0.4.8'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.7
4
+ version: 0.4.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sadayuki Furuhashi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-24 00:00:00.000000000 Z
11
+ date: 2015-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -248,6 +248,8 @@ files:
248
248
  - embulk-docs/push-gh-pages.sh
249
249
  - embulk-docs/src/conf.py
250
250
  - embulk-docs/src/index.rst
251
+ - embulk-docs/src/recipe.rst
252
+ - embulk-docs/src/recipe/scheduled-csv-load-to-elasticsearch-kibana4.rst
251
253
  - embulk-docs/src/release.rst
252
254
  - embulk-docs/src/release/release-0.1.0.rst
253
255
  - embulk-docs/src/release/release-0.2.0.rst
@@ -263,6 +265,7 @@ files:
263
265
  - embulk-docs/src/release/release-0.4.5.rst
264
266
  - embulk-docs/src/release/release-0.4.6.rst
265
267
  - embulk-docs/src/release/release-0.4.7.rst
268
+ - embulk-docs/src/release/release-0.4.8.rst
266
269
  - embulk-standards/build.gradle
267
270
  - embulk-standards/src/main/java/org/embulk/standards/CsvFormatterPlugin.java
268
271
  - embulk-standards/src/main/java/org/embulk/standards/CsvParserPlugin.java
@@ -363,8 +366,8 @@ files:
363
366
  - classpath/bval-jsr303-0.5.jar
364
367
  - classpath/commons-beanutils-core-1.8.3.jar
365
368
  - classpath/commons-lang3-3.1.jar
366
- - classpath/embulk-core-0.4.7.jar
367
- - classpath/embulk-standards-0.4.7.jar
369
+ - classpath/embulk-core-0.4.8.jar
370
+ - classpath/embulk-standards-0.4.8.jar
368
371
  - classpath/guava-18.0.jar
369
372
  - classpath/guice-3.0.jar
370
373
  - classpath/guice-multibindings-3.0.jar