embulk-output-parquet 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +7 -1
- data/build.gradle +4 -7
- data/src/main/java/org/embulk/output/EmbulkWriteSupport.java +7 -7
- data/src/main/java/org/embulk/output/EmbulkWriterBuilder.java +30 -0
- data/src/main/java/org/embulk/output/ParquetOutputPlugin.java +70 -50
- data/src/test/java/org/embulk/output/ParquetOutputPluginTest.java +27 -0
- metadata +32 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 887eeba43ad66ae6159048504e253542162a8988
|
4
|
+
data.tar.gz: a04dba91a7abeecc957d7265f809c9bf1276ae0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56ec1d8ad587e73a97ad769bbaad04793bb28ccf9119c638cde85e6dd38e06626fe8343ecfa9cc2e497cec78724366c2f3d8fdd7656b892c44ad32d9c4d65718
|
7
|
+
data.tar.gz: a99aa07e1b1507c6d375c4d2a21fa6d99341bf72f4022059eda90c88900f7597f687be5baed3c26728187212f59028e8679906fc8f6bba02795e1927f5e1ddcd
|
data/README.md
CHANGED
@@ -19,13 +19,19 @@
|
|
19
19
|
- **default_timestamp_format**: Format of timestamp columns. This can be overwritten for each column using column_options
|
20
20
|
- **column_options**: Specify timezone and timestamp format for each column. Format of this option is the same as the official csv formatter. See [document](
|
21
21
|
http://www.embulk.org/docs/built-in.html#csv-formatter-plugin).
|
22
|
+
- **extra_configurations**: Add extra entries to Configuration which will be passed to ParquetWriter
|
23
|
+
- **overwrite**: Overwrite if output files already exist. (default: fail if files exist)
|
22
24
|
|
23
25
|
## Example
|
24
26
|
|
25
27
|
```yaml
|
26
28
|
out:
|
27
29
|
type: parquet
|
28
|
-
path_prefix:
|
30
|
+
path_prefix: s3a://bucket/keys
|
31
|
+
extra_configuration:
|
32
|
+
fs.s3a.access.key: 'your_access_key'
|
33
|
+
fs.s3a.secret.key: 'your_secret_access_key'
|
34
|
+
|
29
35
|
```
|
30
36
|
|
31
37
|
## Build
|
data/build.gradle
CHANGED
@@ -7,25 +7,22 @@ import com.github.jrubygradle.JRubyExec
|
|
7
7
|
repositories {
|
8
8
|
mavenCentral()
|
9
9
|
jcenter()
|
10
|
-
maven {
|
11
|
-
url "http://maven.twttr.com/"
|
12
|
-
}
|
13
10
|
}
|
14
11
|
configurations {
|
15
12
|
provided
|
16
13
|
runtime.exclude group: "org.slf4j", module: "slf4j-log4j12"
|
17
14
|
}
|
18
15
|
|
19
|
-
version = "0.
|
16
|
+
version = "0.4.0"
|
20
17
|
|
21
18
|
dependencies {
|
22
19
|
compile "org.embulk:embulk-core:0.7.10"
|
23
20
|
provided "org.embulk:embulk-core:0.7.10"
|
24
21
|
|
25
|
-
compile "
|
26
|
-
compile "org.apache.hadoop:hadoop-client:2.
|
22
|
+
compile "org.apache.parquet:parquet-hadoop:1.8.1"
|
23
|
+
compile "org.apache.hadoop:hadoop-client:2.7.1"
|
24
|
+
compile "org.apache.hadoop:hadoop-aws:2.7.1"
|
27
25
|
compile "org.xerial.snappy:snappy-java:1.1.1.6"
|
28
|
-
compile "org.apache.hadoop:hadoop-aws:2.6.0"
|
29
26
|
|
30
27
|
testCompile "junit:junit:4.+"
|
31
28
|
testCompile "org.embulk:embulk-core:0.7.7:tests"
|
@@ -1,19 +1,19 @@
|
|
1
1
|
package org.embulk.output;
|
2
2
|
|
3
3
|
import org.apache.hadoop.conf.Configuration;
|
4
|
+
import org.apache.parquet.hadoop.api.WriteSupport;
|
5
|
+
import org.apache.parquet.io.api.Binary;
|
6
|
+
import org.apache.parquet.io.api.RecordConsumer;
|
7
|
+
import org.apache.parquet.schema.MessageType;
|
8
|
+
import org.apache.parquet.schema.PrimitiveType;
|
9
|
+
import org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName;
|
10
|
+
import org.apache.parquet.schema.Type;
|
4
11
|
import org.embulk.spi.Column;
|
5
12
|
import org.embulk.spi.ColumnVisitor;
|
6
13
|
import org.embulk.spi.PageReader;
|
7
14
|
import org.embulk.spi.Schema;
|
8
15
|
import org.embulk.spi.time.Timestamp;
|
9
16
|
import org.embulk.spi.time.TimestampFormatter;
|
10
|
-
import parquet.hadoop.api.WriteSupport;
|
11
|
-
import parquet.io.api.Binary;
|
12
|
-
import parquet.io.api.RecordConsumer;
|
13
|
-
import parquet.schema.MessageType;
|
14
|
-
import parquet.schema.PrimitiveType;
|
15
|
-
import parquet.schema.PrimitiveType.PrimitiveTypeName;
|
16
|
-
import parquet.schema.Type;
|
17
17
|
|
18
18
|
import java.util.ArrayList;
|
19
19
|
import java.util.HashMap;
|
@@ -0,0 +1,30 @@
|
|
1
|
+
package org.embulk.output;
|
2
|
+
|
3
|
+
import org.apache.hadoop.conf.Configuration;
|
4
|
+
import org.apache.hadoop.fs.Path;
|
5
|
+
import org.apache.parquet.hadoop.ParquetWriter;
|
6
|
+
import org.apache.parquet.hadoop.api.WriteSupport;
|
7
|
+
import org.embulk.spi.PageReader;
|
8
|
+
import org.embulk.spi.Schema;
|
9
|
+
import org.embulk.spi.time.TimestampFormatter;
|
10
|
+
|
11
|
+
public class EmbulkWriterBuilder extends ParquetWriter.Builder<PageReader, EmbulkWriterBuilder> {
|
12
|
+
final Schema schema;
|
13
|
+
final TimestampFormatter[] timestampFormatters;
|
14
|
+
|
15
|
+
public EmbulkWriterBuilder(Path file, Schema schema, TimestampFormatter[] timestampFormatters) {
|
16
|
+
super(file);
|
17
|
+
this.schema = schema;
|
18
|
+
this.timestampFormatters = timestampFormatters;
|
19
|
+
}
|
20
|
+
|
21
|
+
@Override
|
22
|
+
protected EmbulkWriterBuilder self() {
|
23
|
+
return this;
|
24
|
+
}
|
25
|
+
|
26
|
+
@Override
|
27
|
+
protected WriteSupport<PageReader> getWriteSupport(Configuration conf) {
|
28
|
+
return new EmbulkWriteSupport(schema, timestampFormatters);
|
29
|
+
}
|
30
|
+
}
|
@@ -5,6 +5,9 @@ import org.apache.hadoop.conf.Configuration;
|
|
5
5
|
import org.apache.hadoop.fs.LocalFileSystem;
|
6
6
|
import org.apache.hadoop.fs.Path;
|
7
7
|
import org.apache.hadoop.hdfs.DistributedFileSystem;
|
8
|
+
import org.apache.parquet.hadoop.ParquetFileWriter;
|
9
|
+
import org.apache.parquet.hadoop.ParquetWriter;
|
10
|
+
import org.apache.parquet.hadoop.metadata.CompressionCodecName;
|
8
11
|
import org.embulk.config.Config;
|
9
12
|
import org.embulk.config.ConfigDefault;
|
10
13
|
import org.embulk.config.ConfigDiff;
|
@@ -20,9 +23,6 @@ import org.embulk.spi.Schema;
|
|
20
23
|
import org.embulk.spi.TransactionalPageOutput;
|
21
24
|
import org.embulk.spi.time.TimestampFormatter;
|
22
25
|
import org.embulk.spi.util.Timestamps;
|
23
|
-
import parquet.hadoop.ParquetWriter;
|
24
|
-
import parquet.hadoop.api.WriteSupport;
|
25
|
-
import parquet.hadoop.metadata.CompressionCodecName;
|
26
26
|
|
27
27
|
import java.io.IOException;
|
28
28
|
import java.util.List;
|
@@ -30,11 +30,9 @@ import java.util.Map;
|
|
30
30
|
|
31
31
|
@SuppressWarnings("unused")
|
32
32
|
public class ParquetOutputPlugin
|
33
|
-
implements OutputPlugin
|
34
|
-
{
|
33
|
+
implements OutputPlugin {
|
35
34
|
public interface PluginTask
|
36
|
-
extends Task, TimestampFormatter.Task
|
37
|
-
{
|
35
|
+
extends Task, TimestampFormatter.Task {
|
38
36
|
@Config("path_prefix")
|
39
37
|
String getPathPrefix();
|
40
38
|
|
@@ -47,11 +45,13 @@ public class ParquetOutputPlugin
|
|
47
45
|
String getSequenceFormat();
|
48
46
|
|
49
47
|
@Config("block_size")
|
50
|
-
@ConfigDefault("134217728")
|
48
|
+
@ConfigDefault("134217728")
|
49
|
+
// 128M
|
51
50
|
int getBlockSize();
|
52
51
|
|
53
52
|
@Config("page_size")
|
54
|
-
@ConfigDefault("1048576")
|
53
|
+
@ConfigDefault("1048576")
|
54
|
+
// 1M
|
55
55
|
int getPageSize();
|
56
56
|
|
57
57
|
@Config("compression_codec")
|
@@ -61,16 +61,23 @@ public class ParquetOutputPlugin
|
|
61
61
|
@Config("column_options")
|
62
62
|
@ConfigDefault("{}")
|
63
63
|
Map<String, TimestampColumnOption> getColumnOptions();
|
64
|
+
|
65
|
+
@Config("extra_configurations")
|
66
|
+
@ConfigDefault("{}")
|
67
|
+
Map<String, String> getExtraConfigurations();
|
68
|
+
|
69
|
+
@Config("overwrite")
|
70
|
+
@ConfigDefault("false")
|
71
|
+
boolean getOverwrite();
|
64
72
|
}
|
65
73
|
|
66
74
|
public interface TimestampColumnOption
|
67
|
-
extends Task, TimestampFormatter.TimestampColumnOption
|
68
|
-
|
75
|
+
extends Task, TimestampFormatter.TimestampColumnOption {
|
76
|
+
}
|
69
77
|
|
70
78
|
public ConfigDiff transaction(ConfigSource config,
|
71
|
-
|
72
|
-
|
73
|
-
{
|
79
|
+
Schema schema, int processorCount,
|
80
|
+
OutputPlugin.Control control) {
|
74
81
|
PluginTask task = config.loadConfig(PluginTask.class);
|
75
82
|
|
76
83
|
//TODO
|
@@ -80,65 +87,78 @@ public class ParquetOutputPlugin
|
|
80
87
|
}
|
81
88
|
|
82
89
|
public ConfigDiff resume(TaskSource taskSource,
|
83
|
-
|
84
|
-
|
85
|
-
{
|
90
|
+
Schema schema, int processorCount,
|
91
|
+
OutputPlugin.Control control) {
|
86
92
|
throw new UnsupportedOperationException("parquet output plugin does not support resuming");
|
87
93
|
}
|
88
94
|
|
89
95
|
public void cleanup(TaskSource taskSource,
|
90
|
-
|
91
|
-
|
92
|
-
{
|
96
|
+
Schema schema, int processorCount,
|
97
|
+
List<TaskReport> successTaskReports) {
|
93
98
|
//TODO
|
94
99
|
}
|
95
100
|
|
96
|
-
public TransactionalPageOutput open(TaskSource taskSource, final Schema schema, int processorIndex)
|
97
|
-
{
|
101
|
+
public TransactionalPageOutput open(TaskSource taskSource, final Schema schema, int processorIndex) {
|
98
102
|
PluginTask task = taskSource.loadTask(PluginTask.class);
|
99
103
|
|
104
|
+
final PageReader reader = new PageReader(schema);
|
105
|
+
final ParquetWriter<PageReader> writer = createWriter(task, schema, processorIndex);
|
106
|
+
|
107
|
+
return new ParquetTransactionalPageOutput(reader, writer);
|
108
|
+
}
|
109
|
+
|
110
|
+
private String buildPath(PluginTask task, int processorIndex) {
|
100
111
|
final String pathPrefix = task.getPathPrefix();
|
101
112
|
final String pathSuffix = task.getFileNameExtension();
|
102
113
|
final String sequenceFormat = task.getSequenceFormat();
|
114
|
+
return pathPrefix + String.format(sequenceFormat, processorIndex) + pathSuffix;
|
115
|
+
}
|
116
|
+
|
117
|
+
private ParquetWriter<PageReader> createWriter(PluginTask task, Schema schema, int processorIndex) {
|
118
|
+
final TimestampFormatter[] timestampFormatters = Timestamps.newTimestampColumnFormatters(task, schema, task.getColumnOptions());
|
119
|
+
|
120
|
+
final Path path = new Path(buildPath(task, processorIndex));
|
103
121
|
final CompressionCodecName codec = CompressionCodecName.valueOf(task.getCompressionCodec());
|
104
122
|
final int blockSize = task.getBlockSize();
|
105
123
|
final int pageSize = task.getPageSize();
|
124
|
+
final Configuration conf = createConfiguration(task.getExtraConfigurations());
|
125
|
+
final boolean overwrite = task.getOverwrite();
|
106
126
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
127
|
+
ParquetWriter<PageReader> writer = null;
|
128
|
+
try {
|
129
|
+
EmbulkWriterBuilder builder = new EmbulkWriterBuilder(path, schema, timestampFormatters)
|
130
|
+
.withCompressionCodec(codec)
|
131
|
+
.withRowGroupSize(blockSize)
|
132
|
+
.withPageSize(pageSize)
|
133
|
+
.withDictionaryPageSize(pageSize)
|
134
|
+
.withConf(conf);
|
135
|
+
|
136
|
+
if (overwrite) {
|
137
|
+
builder.withWriteMode(ParquetFileWriter.Mode.OVERWRITE);
|
138
|
+
}
|
114
139
|
|
115
|
-
|
140
|
+
writer = builder.build();
|
141
|
+
} catch (IOException e) {
|
142
|
+
Throwables.propagate(e);
|
143
|
+
}
|
144
|
+
return writer;
|
116
145
|
}
|
117
146
|
|
118
|
-
private
|
119
|
-
ParquetWriter<T> writer = null;
|
120
|
-
|
147
|
+
private Configuration createConfiguration(Map<String, String> extra) {
|
121
148
|
Configuration conf = new Configuration();
|
149
|
+
|
150
|
+
// Default values
|
122
151
|
conf.set("fs.hdfs.impl", DistributedFileSystem.class.getName());
|
123
152
|
conf.set("fs.file.impl", LocalFileSystem.class.getName());
|
124
|
-
conf.setClassLoader(this.getClass().getClassLoader());
|
125
153
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
writeSupport,
|
130
|
-
codec,
|
131
|
-
blockSize,
|
132
|
-
pageSize,
|
133
|
-
pageSize,
|
134
|
-
ParquetWriter.DEFAULT_IS_DICTIONARY_ENABLED,
|
135
|
-
ParquetWriter.DEFAULT_IS_VALIDATING_ENABLED,
|
136
|
-
ParquetWriter.DEFAULT_WRITER_VERSION,
|
137
|
-
conf);
|
138
|
-
} catch (IOException e) {
|
139
|
-
Throwables.propagate(e);
|
154
|
+
// Optional values
|
155
|
+
for (Map.Entry<String, String> entry : extra.entrySet()) {
|
156
|
+
conf.set(entry.getKey(), entry.getValue());
|
140
157
|
}
|
141
|
-
|
158
|
+
|
159
|
+
conf.setClassLoader(this.getClass().getClassLoader());
|
160
|
+
|
161
|
+
return conf;
|
142
162
|
}
|
143
163
|
|
144
164
|
class ParquetTransactionalPageOutput implements TransactionalPageOutput {
|
@@ -157,7 +177,7 @@ public class ParquetOutputPlugin
|
|
157
177
|
while (reader.nextRecord()) {
|
158
178
|
writer.write(reader);
|
159
179
|
}
|
160
|
-
} catch(IOException e) {
|
180
|
+
} catch (IOException e) {
|
161
181
|
Throwables.propagate(e);
|
162
182
|
}
|
163
183
|
}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
package org.embulk.output;
|
2
2
|
|
3
|
+
import org.apache.hadoop.conf.Configuration;
|
3
4
|
import org.embulk.EmbulkTestRuntime;
|
4
5
|
import org.embulk.config.ConfigException;
|
5
6
|
import org.embulk.config.ConfigSource;
|
@@ -7,6 +8,11 @@ import org.embulk.spi.Exec;
|
|
7
8
|
import org.junit.Rule;
|
8
9
|
import org.junit.Test;
|
9
10
|
|
11
|
+
import java.lang.reflect.InvocationTargetException;
|
12
|
+
import java.lang.reflect.Method;
|
13
|
+
import java.util.HashMap;
|
14
|
+
import java.util.Map;
|
15
|
+
|
10
16
|
import static org.junit.Assert.*;
|
11
17
|
|
12
18
|
public class ParquetOutputPluginTest {
|
@@ -24,6 +30,7 @@ public class ParquetOutputPluginTest {
|
|
24
30
|
assertEquals(134217728, task.getBlockSize());
|
25
31
|
assertEquals(1048576, task.getPageSize());
|
26
32
|
assertEquals("UNCOMPRESSED", task.getCompressionCodec());
|
33
|
+
assertFalse(task.getOverwrite());
|
27
34
|
}
|
28
35
|
|
29
36
|
@Test(expected = ConfigException.class)
|
@@ -33,5 +40,25 @@ public class ParquetOutputPluginTest {
|
|
33
40
|
config.loadConfig(ParquetOutputPlugin.PluginTask.class);
|
34
41
|
}
|
35
42
|
|
43
|
+
@Test
|
44
|
+
public void checkExtraConfigurations() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
|
45
|
+
ConfigSource map = Exec.newConfigSource()
|
46
|
+
.set("foo", "bar");
|
47
|
+
|
48
|
+
ConfigSource config = Exec.newConfigSource()
|
49
|
+
.set("path_prefix", "test")
|
50
|
+
.setNested("extra_configurations", map);
|
51
|
+
|
52
|
+
ParquetOutputPlugin.PluginTask task = config.loadConfig(ParquetOutputPlugin.PluginTask.class);
|
53
|
+
|
54
|
+
Map<String, String> extra = task.getExtraConfigurations();
|
55
|
+
assertTrue(extra.containsKey("foo"));
|
56
|
+
assertEquals("bar", extra.get("foo"));
|
36
57
|
|
58
|
+
ParquetOutputPlugin plugin = new ParquetOutputPlugin();
|
59
|
+
Method method = ParquetOutputPlugin.class.getDeclaredMethod("createConfiguration", Map.class);
|
60
|
+
method.setAccessible(true);
|
61
|
+
Configuration conf = (Configuration) method.invoke(plugin, extra);
|
62
|
+
assertEquals("bar", conf.get("foo"));
|
63
|
+
}
|
37
64
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: embulk-output-parquet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OKUNO Akihiro
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,6 +56,7 @@ files:
|
|
56
56
|
- gradlew.bat
|
57
57
|
- lib/embulk/output/parquet.rb
|
58
58
|
- src/main/java/org/embulk/output/EmbulkWriteSupport.java
|
59
|
+
- src/main/java/org/embulk/output/EmbulkWriterBuilder.java
|
59
60
|
- src/main/java/org/embulk/output/ParquetOutputPlugin.java
|
60
61
|
- src/test/java/org/embulk/output/ParquetOutputPluginTest.java
|
61
62
|
- classpath/activation-1.1.jar
|
@@ -73,43 +74,40 @@ files:
|
|
73
74
|
- classpath/commons-compress-1.4.1.jar
|
74
75
|
- classpath/commons-configuration-1.6.jar
|
75
76
|
- classpath/commons-digester-1.8.jar
|
76
|
-
- classpath/commons-el-1.0.jar
|
77
77
|
- classpath/commons-httpclient-3.1.jar
|
78
78
|
- classpath/commons-io-2.4.jar
|
79
79
|
- classpath/commons-lang-2.6.jar
|
80
80
|
- classpath/commons-logging-1.1.3.jar
|
81
81
|
- classpath/commons-math3-3.1.1.jar
|
82
82
|
- classpath/commons-net-3.1.jar
|
83
|
-
- classpath/curator-client-2.
|
84
|
-
- classpath/curator-framework-2.
|
85
|
-
- classpath/curator-recipes-2.
|
86
|
-
- classpath/embulk-output-parquet-0.
|
83
|
+
- classpath/curator-client-2.7.1.jar
|
84
|
+
- classpath/curator-framework-2.7.1.jar
|
85
|
+
- classpath/curator-recipes-2.7.1.jar
|
86
|
+
- classpath/embulk-output-parquet-0.4.0.jar
|
87
87
|
- classpath/gson-2.2.4.jar
|
88
|
-
- classpath/hadoop-annotations-2.
|
89
|
-
- classpath/hadoop-auth-2.
|
90
|
-
- classpath/hadoop-aws-2.
|
91
|
-
- classpath/hadoop-client-2.
|
92
|
-
- classpath/hadoop-common-2.
|
93
|
-
- classpath/hadoop-hdfs-2.
|
94
|
-
- classpath/hadoop-mapreduce-client-app-2.
|
95
|
-
- classpath/hadoop-mapreduce-client-common-2.
|
96
|
-
- classpath/hadoop-mapreduce-client-core-2.
|
97
|
-
- classpath/hadoop-mapreduce-client-jobclient-2.
|
98
|
-
- classpath/hadoop-mapreduce-client-shuffle-2.
|
99
|
-
- classpath/hadoop-yarn-api-2.
|
100
|
-
- classpath/hadoop-yarn-client-2.
|
101
|
-
- classpath/hadoop-yarn-common-2.
|
102
|
-
- classpath/hadoop-yarn-server-common-2.
|
103
|
-
- classpath/hadoop-yarn-server-nodemanager-2.
|
104
|
-
- classpath/htrace-core-3.0.
|
88
|
+
- classpath/hadoop-annotations-2.7.1.jar
|
89
|
+
- classpath/hadoop-auth-2.7.1.jar
|
90
|
+
- classpath/hadoop-aws-2.7.1.jar
|
91
|
+
- classpath/hadoop-client-2.7.1.jar
|
92
|
+
- classpath/hadoop-common-2.7.1.jar
|
93
|
+
- classpath/hadoop-hdfs-2.7.1.jar
|
94
|
+
- classpath/hadoop-mapreduce-client-app-2.7.1.jar
|
95
|
+
- classpath/hadoop-mapreduce-client-common-2.7.1.jar
|
96
|
+
- classpath/hadoop-mapreduce-client-core-2.7.1.jar
|
97
|
+
- classpath/hadoop-mapreduce-client-jobclient-2.7.1.jar
|
98
|
+
- classpath/hadoop-mapreduce-client-shuffle-2.7.1.jar
|
99
|
+
- classpath/hadoop-yarn-api-2.7.1.jar
|
100
|
+
- classpath/hadoop-yarn-client-2.7.1.jar
|
101
|
+
- classpath/hadoop-yarn-common-2.7.1.jar
|
102
|
+
- classpath/hadoop-yarn-server-common-2.7.1.jar
|
103
|
+
- classpath/hadoop-yarn-server-nodemanager-2.7.1.jar
|
104
|
+
- classpath/htrace-core-3.1.0-incubating.jar
|
105
105
|
- classpath/httpclient-4.2.5.jar
|
106
106
|
- classpath/httpcore-4.2.4.jar
|
107
107
|
- classpath/jackson-core-asl-1.9.13.jar
|
108
108
|
- classpath/jackson-jaxrs-1.9.13.jar
|
109
109
|
- classpath/jackson-mapper-asl-1.9.13.jar
|
110
110
|
- classpath/jackson-xc-1.9.13.jar
|
111
|
-
- classpath/jasper-compiler-5.5.23.jar
|
112
|
-
- classpath/jasper-runtime-5.5.23.jar
|
113
111
|
- classpath/java-xmlbuilder-0.4.jar
|
114
112
|
- classpath/jaxb-api-2.2.2.jar
|
115
113
|
- classpath/jaxb-impl-2.2.3-1.jar
|
@@ -126,18 +124,18 @@ files:
|
|
126
124
|
- classpath/joda-time-2.9.1.jar
|
127
125
|
- classpath/jsch-0.1.42.jar
|
128
126
|
- classpath/jsp-api-2.1.jar
|
129
|
-
- classpath/jsr305-
|
127
|
+
- classpath/jsr305-3.0.0.jar
|
130
128
|
- classpath/leveldbjni-all-1.8.jar
|
131
129
|
- classpath/log4j-1.2.17.jar
|
132
130
|
- classpath/netty-3.7.0.Final.jar
|
131
|
+
- classpath/netty-all-4.0.23.Final.jar
|
133
132
|
- classpath/paranamer-2.3.jar
|
134
|
-
- classpath/parquet-column-1.
|
135
|
-
- classpath/parquet-common-1.
|
136
|
-
- classpath/parquet-encoding-1.
|
137
|
-
- classpath/parquet-format-2.
|
138
|
-
- classpath/parquet-
|
139
|
-
- classpath/parquet-
|
140
|
-
- classpath/parquet-jackson-1.5.0.jar
|
133
|
+
- classpath/parquet-column-1.8.1.jar
|
134
|
+
- classpath/parquet-common-1.8.1.jar
|
135
|
+
- classpath/parquet-encoding-1.8.1.jar
|
136
|
+
- classpath/parquet-format-2.3.0-incubating.jar
|
137
|
+
- classpath/parquet-hadoop-1.8.1.jar
|
138
|
+
- classpath/parquet-jackson-1.8.1.jar
|
141
139
|
- classpath/protobuf-java-2.5.0.jar
|
142
140
|
- classpath/servlet-api-2.5.jar
|
143
141
|
- classpath/snappy-java-1.1.1.6.jar
|