List of usage examples for org.apache.hadoop.typedbytes TypedBytesWritable setValue
public void setValue(Object obj)
From source file:com.dappervision.hbase.mapred.TypedBytesTableRecordReader.java
License:Apache License
/** * @param key HStoreKey as input key./*ww w .java2s . c o m*/ * @param value MapWritable as input value * @return true if there was more data * @throws IOException */ public boolean next(TypedBytesWritable key, TypedBytesWritable value) throws IOException { ImmutableBytesWritable key0 = new ImmutableBytesWritable(); Result value0 = new Result(); boolean out = this.recordReaderImpl.next(key0, value0); if (out) { TreeMap tm = new TreeMap(); for (Map.Entry<byte[], NavigableMap<byte[], byte[]>> entry : value0.getNoVersionMap().entrySet()) { TreeMap tm_inner = new TreeMap(); for (Map.Entry<byte[], byte[]> entry0 : entry.getValue().entrySet()) { tm_inner.put(new Buffer(entry0.getKey()), new Buffer(entry0.getValue())); } tm.put(new Buffer(entry.getKey()), tm_inner); } key.setValue(new Buffer(key0.get())); value.setValue(tm); } return out; }
From source file:com.dappervision.hbase.mapred.TypedBytesTableRecordReaderSingleValue.java
License:Apache License
/** * @param key HStoreKey as input key./* w w w .j av a 2s. c o m*/ * @param value MapWritable as input value * @return true if there was more data * @throws IOException */ public boolean next(TypedBytesWritable key, TypedBytesWritable value) throws IOException { ImmutableBytesWritable key0 = new ImmutableBytesWritable(); Result value0 = new Result(); boolean out = this.recordReaderImpl.next(key0, value0); if (out) { byte[] value_byte = value0.value(); if (value_byte == null) { throw new IOException( "SingleValue requires at least one column to be present for each row, this should not be possible!"); } key.setValue(new Buffer(key0.get())); value.setValue(new Buffer(value_byte)); } return out; }
From source file:com.dappervision.hbase.mapred.TypedBytesTableReducer.java
License:Apache License
@Override public void reduce(Text key, Iterator<Text> values, OutputCollector<TypedBytesWritable, TypedBytesWritable> outputCollector, Reporter arg3) throws IOException { byte[] keyBytes = key.getBytes(); TypedBytesWritable keyWritable = new TypedBytesWritable(); TypedBytesWritable valueWritable = new TypedBytesWritable(); keyWritable.setValue(new Buffer(keyBytes)); //merge the column family and qualifier HashMap<String, HashMap<String, String>> cfMap = new HashMap<String, HashMap<String, String>>(); while (values.hasNext()) { Text value = values.next(); String strVal = value.toString(); //Separate column family with comma (:) //Separate the qualifier and value with equity String[] cf_qual_val_parts = strVal.split(":"); String cf = cf_qual_val_parts[0]; String qual_val = cf_qual_val_parts[1]; String[] qual_val_parts = qual_val.split("="); String qual = qual_val_parts[0]; String val = qual_val_parts[1]; if (cfMap.get(cf) != null) { HashMap<String, String> qualMap = cfMap.get(cf); if (qualMap == null) { qualMap = new HashMap<String, String>(); }//from w w w . j a v a 2 s .c o m qualMap.put(qual, val); // the duplicated key will be replaced, if using Buffer, we should do it ourselves } else { HashMap<String, String> qualMap = new HashMap<String, String>(); qualMap.put(qual, val); cfMap.put(cf, qualMap); } } HashMap<Buffer, HashMap<Buffer, Buffer>> bufMap = new HashMap<Buffer, HashMap<Buffer, Buffer>>(); Set<Entry<String, HashMap<String, String>>> entrySet = cfMap.entrySet(); for (Entry<String, HashMap<String, String>> entry : entrySet) { HashMap<String, String> qualValMap = entry.getValue(); HashMap<Buffer, Buffer> qualValBufMap = new HashMap<Buffer, Buffer>(); for (Entry<String, String> qualValEntry : qualValMap.entrySet()) { qualValBufMap.put(new Buffer(qualValEntry.getKey().getBytes()), new Buffer(qualValEntry.getValue().getBytes())); } bufMap.put(new Buffer(entry.getKey().getBytes()), qualValBufMap); } valueWritable.setValue(bufMap); outputCollector.collect(keyWritable, valueWritable); }
From source file:com.jfolson.hive.serde.RBaseSerDe.java
License:Apache License
protected void serializeField(Object o, ObjectInspector oi, Object reuse) throws IOException { //LOG.info("Serializing hive type: "+oi.getTypeName()); //LOG.info("Serializing category: "+oi.getCategory().toString()); if (o == null) { tbOut.writeNull();/* w ww. j a v a 2s. c o m*/ return; } switch (oi.getCategory()) { case PRIMITIVE: { PrimitiveObjectInspector poi = (PrimitiveObjectInspector) oi; //LOG.info("Serializing primitive: "+poi.getPrimitiveCategory().toString()); switch (poi.getPrimitiveCategory()) { case VOID: { return; } case BINARY: { BinaryObjectInspector boi = (BinaryObjectInspector) poi; TypedBytesWritable bytes = reuse == null ? new TypedBytesWritable() : (TypedBytesWritable) reuse; BytesWritable bytesWrite = boi.getPrimitiveWritableObject(o); if (bytesWrite != null) { bytes.set(bytesWrite); if (!RType.isValid(bytes)) { LOG.error("Invalid typedbytes detected with type: " + RType.getType(bytes).code); bytes.setValue(new Buffer(bytesWrite.getBytes(), 0, bytesWrite.getLength())); } //LOG.info("Writing binary primitive with class: "+bytes.getClass().getName()); tbOut.write(bytes); } return; } case BOOLEAN: { BooleanObjectInspector boi = (BooleanObjectInspector) poi; BooleanWritable r = reuse == null ? new BooleanWritable() : (BooleanWritable) reuse; r.set(boi.get(o)); tbOut.write(r); return; } case BYTE: { ByteObjectInspector boi = (ByteObjectInspector) poi; ByteWritable r = reuse == null ? new ByteWritable() : (ByteWritable) reuse; r.set(boi.get(o)); tbOut.write(r); return; } case SHORT: { ShortObjectInspector spoi = (ShortObjectInspector) poi; ShortWritable r = reuse == null ? new ShortWritable() : (ShortWritable) reuse; r.set(spoi.get(o)); tbOut.write(r); return; } case INT: { IntObjectInspector ioi = (IntObjectInspector) poi; IntWritable r = reuse == null ? new IntWritable() : (IntWritable) reuse; r.set(ioi.get(o)); tbOut.write(r); return; } case LONG: { LongObjectInspector loi = (LongObjectInspector) poi; LongWritable r = reuse == null ? new LongWritable() : (LongWritable) reuse; r.set(loi.get(o)); tbOut.write(r); return; } case FLOAT: { FloatObjectInspector foi = (FloatObjectInspector) poi; FloatWritable r = reuse == null ? new FloatWritable() : (FloatWritable) reuse; r.set(foi.get(o)); tbOut.write(r); return; } case DOUBLE: DoubleObjectInspector doi = (DoubleObjectInspector) poi; DoubleWritable r = reuse == null ? new DoubleWritable() : (DoubleWritable) reuse; r.set(doi.get(o)); tbOut.write(r); return; case STRING: { StringObjectInspector soi = (StringObjectInspector) poi; Text t = soi.getPrimitiveWritableObject(o); tbOut.write(t); return; } default: { throw new RuntimeException("Unrecognized type: " + poi.getPrimitiveCategory()); } } } case LIST: { ListObjectInspector loi = (ListObjectInspector) oi; ObjectInspector elemOI = loi.getListElementObjectInspector(); List l = loi.getList(o); // Don't use array (typecode: 144) until everything supports NA values in typedbytes if (false) {//(elemOI.getCategory()==ObjectInspector.Category.PRIMITIVE){ tbOut.writeArray(l, (PrimitiveObjectInspector) elemOI); } else { tbOut.writeVector(l, (PrimitiveObjectInspector) elemOI); } return; } case MAP: case STRUCT: { // For complex object, serialize to JSON format String s = SerDeUtils.getJSONString(o, oi); Text t = reuse == null ? new Text() : (Text) reuse; // convert to Text and write it t.set(s); tbOut.write(t); return; } default: { throw new RuntimeException("Unrecognized type: " + oi.getCategory()); } } }
From source file:com.jfolson.hive.serde.RTypedBytesSerDe.java
License:Apache License
private void serializeField(Object o, ObjectInspector oi, Object reuse) throws IOException { //LOG.info("Serializing hive type: "+oi.getTypeName()); //LOG.info("Serializing category: "+oi.getCategory().toString()); if (o == null) { tbOut.writeNull();/* w w w . j a v a 2 s.c o m*/ return; } switch (oi.getCategory()) { case PRIMITIVE: { PrimitiveObjectInspector poi = (PrimitiveObjectInspector) oi; //LOG.info("Serializing primitive: "+poi.getPrimitiveCategory().toString()); switch (poi.getPrimitiveCategory()) { case VOID: { return; } case BINARY: { BinaryObjectInspector boi = (BinaryObjectInspector) poi; TypedBytesWritable bytes = reuse == null ? new TypedBytesWritable() : (TypedBytesWritable) reuse; BytesWritable bytesWrite = boi.getPrimitiveWritableObject(o); if (bytesWrite != null) { bytes.set(bytesWrite); if (!RType.isValid(bytes)) { LOG.error("Invalid typedbytes detected with type: " + RType.getType(bytes).code); bytes.setValue(new Buffer(bytesWrite.getBytes(), 0, bytesWrite.getLength())); } //LOG.info("Writing binary primitive with class: "+bytes.getClass().getName()); tbOut.write(bytes); } return; } case BOOLEAN: { BooleanObjectInspector boi = (BooleanObjectInspector) poi; BooleanWritable r = reuse == null ? new BooleanWritable() : (BooleanWritable) reuse; r.set(boi.get(o)); tbOut.write(r); return; } case BYTE: { ByteObjectInspector boi = (ByteObjectInspector) poi; ByteWritable r = reuse == null ? new ByteWritable() : (ByteWritable) reuse; r.set(boi.get(o)); tbOut.write(r); return; } case SHORT: { ShortObjectInspector spoi = (ShortObjectInspector) poi; ShortWritable r = reuse == null ? new ShortWritable() : (ShortWritable) reuse; r.set(spoi.get(o)); tbOut.write(r); return; } case INT: { IntObjectInspector ioi = (IntObjectInspector) poi; IntWritable r = reuse == null ? new IntWritable() : (IntWritable) reuse; r.set(ioi.get(o)); tbOut.write(r); return; } case LONG: { LongObjectInspector loi = (LongObjectInspector) poi; LongWritable r = reuse == null ? new LongWritable() : (LongWritable) reuse; r.set(loi.get(o)); tbOut.write(r); return; } case FLOAT: { FloatObjectInspector foi = (FloatObjectInspector) poi; FloatWritable r = reuse == null ? new FloatWritable() : (FloatWritable) reuse; r.set(foi.get(o)); tbOut.write(r); return; } case DOUBLE: DoubleObjectInspector doi = (DoubleObjectInspector) poi; DoubleWritable r = reuse == null ? new DoubleWritable() : (DoubleWritable) reuse; r.set(doi.get(o)); tbOut.write(r); return; case STRING: { StringObjectInspector soi = (StringObjectInspector) poi; Text t = soi.getPrimitiveWritableObject(o); tbOut.write(t); return; } default: { throw new RuntimeException("Unrecognized type: " + poi.getPrimitiveCategory()); } } } case LIST: { ListObjectInspector loi = (ListObjectInspector) oi; ObjectInspector elemOI = loi.getListElementObjectInspector(); List l = loi.getList(o); if (false) {//(elemOI.getCategory()==ObjectInspector.Category.PRIMITIVE){ tbOut.writeArray(l, (PrimitiveObjectInspector) elemOI); } else { tbOut.writeVector(l, (PrimitiveObjectInspector) elemOI); } return; } case MAP: case STRUCT: { // For complex object, serialize to JSON format String s = SerDeUtils.getJSONString(o, oi); Text t = reuse == null ? new Text() : (Text) reuse; // convert to Text and write it t.set(s); tbOut.write(t); return; } default: { throw new RuntimeException("Unrecognized type: " + oi.getCategory()); } } }
From source file:fm.last.feathers.output.MultipleSequenceFiles.java
License:Apache License
protected TypedBytesWritable generateActualKey(TypedBytesWritable key, TypedBytesWritable value) { key.setValue(((ArrayList) key.getValue()).get(1)); return key;// w ww . j a v a2 s . c om }
From source file:fm.last.pigtail.test.TestTypedBytesSequenceFileLoader.java
License:Apache License
private String createSequenceFile(Object[] data) throws IOException { File tmpFile = File.createTempFile("test", ".tbseq"); String tmpFileName = tmpFile.getAbsolutePath(); System.err.println("fileName: " + tmpFileName); Path path = new Path("file:///" + tmpFileName); JobConf conf = new JobConf(); FileSystem fs = FileSystem.get(path.toUri(), conf); TypedBytesWritable key = new TypedBytesWritable(); TypedBytesWritable value = new TypedBytesWritable(); SequenceFile.Writer writer = null; try {//from w w w . j av a2s . co m writer = SequenceFile.createWriter(fs, conf, path, key.getClass(), value.getClass()); for (int i = 0; i < data.length; i += 2) { key.setValue(data[i]); value.setValue(data[i + 1]); writer.append(key, value); } } finally { IOUtils.closeStream(writer); } // fix the file path string on Windows String regex = "\\\\"; String replacement = quoteReplacement("\\\\"); return tmpFileName.replaceAll(regex, replacement); }