假设我有一个tsv或csv文件,JAVA中是否有任何编程方式将文件转换为ORC文件格式并对其执行Snappy压缩?
答案 0 :(得分:0)
BLOT - 这是一个片段,而不是完整的代码。请将其用作参考,并将其嵌入您的解决方案中。
遵循一套快速说明,您可以围绕它构建MapReduce代码。
在驱动程序类中,将输出格式类设置为ORC。下面的内容[只是一个片段,而不是完整的代码]
Job = job = Job.getInstance(conf);
job.setOutputFormatClass(OrcOutputFormat.class);
FileOutputFormat.setOutputCompressorClass(job,SnappyCompressor.class);
public static class MyReducer extends Reducer<Text,IntWritable,NullWritable,OrcStruct> { private TypeDescription schema = TypeDescription.fromString("struct<key:string,ints:array<int>>"); // createValue creates the correct value type for the schema private OrcStruct pair = (OrcStruct) OrcStruct.createValue(schema); // get a handle to the list of ints private OrcList<IntWritable> valueList = (OrcList<IntWritable>) pair.getFieldValue(1); private final NullWritable nada = NullWritable.get(); public void reduce(Text key, Iterable<IntWritable> values, Context output ) throws IOException, InterruptedException { pair.setFieldValue(0, key); valueList.clear(); for(IntWritable val: values) { valueList.add(new IntWritable(val.get())); } output.write(nada, pair); } }
这应该可以使用HDFS上的snappy压缩编解码器以ORC格式编写数据。