-
-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathParquetRowWriter.java
55 lines (49 loc) · 1.53 KB
/
ParquetRowWriter.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package tech.v3.dataset;
import org.apache.parquet.schema.MessageType;
import org.apache.parquet.io.api.RecordConsumer;
import org.apache.parquet.hadoop.ParquetWriter;
import org.apache.parquet.hadoop.api.WriteSupport;
import org.apache.hadoop.conf.Configuration;
import org.apache.parquet.io.OutputFile;
import clojure.lang.IFn;
import java.util.Map;
public class ParquetRowWriter extends WriteSupport<Long>
{
public final IFn rowWriter;
public final MessageType schema;
public final Map<String,String> metadata;
public RecordConsumer consumer;
public Object dataset;
public ParquetRowWriter(IFn _writer, MessageType _schema, Map<String,String> _meta) {
rowWriter = _writer;
schema = _schema;
metadata = _meta;
consumer = null;
//Outside forces must set dataset
dataset = null;
}
@Override
public WriteContext init(Configuration configuration) {
return new WriteContext( schema, metadata );
}
@Override
public void prepareForWrite(RecordConsumer recordConsumer) {
consumer = recordConsumer;
}
@Override
public void write(Long record) {
rowWriter.invoke(dataset,record,consumer);
}
public static class WriterBuilder extends ParquetWriter.Builder<Long,WriterBuilder>
{
public final ParquetRowWriter writer;
public WriterBuilder(OutputFile outf, ParquetRowWriter _writer) {
super(outf);
writer = _writer;
}
public WriterBuilder self() { return this; }
protected WriteSupport<Long> getWriteSupport(Configuration conf) {
return writer;
}
}
}