Package org.apache.hadoop.hive.serde2.io

Examples of org.apache.hadoop.hive.serde2.io.ByteWritable


    try {
      LazyByte b = new LazyByte(LazyPrimitiveObjectInspectorFactory.lazyByteObjectInspector);
      initLazyObject(b,new byte[]{'0'}, 0, 0);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'0'}, 0, 1);
      assertEquals(new ByteWritable((byte)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '0'}, 0, 2);
      assertEquals(new ByteWritable((byte)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '0'}, 0, 2);
      assertEquals(new ByteWritable((byte)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 1);
      assertEquals(new ByteWritable((byte)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '-', '1'}, 1, 2);
      assertEquals(new ByteWritable((byte)-1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '+', '1'}, 1, 2);
      assertEquals(new ByteWritable((byte)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '8'}, 0, 4);
      assertEquals(new ByteWritable((byte)-128), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '7'}, 0, 4);
      assertEquals(new ByteWritable((byte)127), b.getWritableObject());
     
      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 2);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '8'}, 0, 4);
      assertNull(b.getWritableObject());
View Full Code Here


      // Byte
      Converter byteConverter = ObjectInspectorConverters.getConverter(
          PrimitiveObjectInspectorFactory.javaIntObjectInspector,
          PrimitiveObjectInspectorFactory.writableByteObjectInspector);
      assertEquals("ByteConverter",
          new ByteWritable((byte)0),
          byteConverter.convert(Integer.valueOf(0))
          );
      assertEquals("ByteConverter",
          new ByteWritable((byte)1),
          byteConverter.convert(Integer.valueOf(1))
          );
     
      // Short
      Converter shortConverter = ObjectInspectorConverters.getConverter(
View Full Code Here

      LazyArray b = (LazyArray)LazyFactory.createLazyObject(oi);
      byte[] data = new byte[]{'-', '1', 1, '\\', 'N', 1, '8'};
      TestLazyPrimitive.initLazyObject(b, data, 0, data.length);
     
      assertNull(b.getListElementObject(-1));
      assertEquals(new ByteWritable((byte)-1), ((LazyByte)b.getListElementObject(0)).getWritableObject());
      assertEquals(new ByteWritable((byte)-1), ((LazyByte)b.getList().get(0)).getWritableObject());
      assertNull(b.getListElementObject(1));
      assertNull(b.getList().get(1));
      assertEquals(new ByteWritable((byte)8), ((LazyByte)b.getListElementObject(2)).getWritableObject());
      assertEquals(new ByteWritable((byte)8), ((LazyByte)b.getList().get(2)).getWritableObject());
      assertNull(b.getListElementObject(3));
      assertEquals(3, b.getList().size());
     
      // Array of String
      oi = LazyFactory.createLazyObjectInspector(
View Full Code Here

*/
public class LazyByte extends LazyPrimitive<LazyByteObjectInspector, ByteWritable> {

  public LazyByte(LazyByteObjectInspector oi) {
    super(oi);
    data = new ByteWritable();
  }
View Full Code Here

    data = new ByteWritable();
  }

  public LazyByte(LazyByte copy) {
    super(copy);
    data = new ByteWritable(copy.data.get());
  }
View Full Code Here

      serDe.initialize(conf, tbl);

      // Data
      Text t = new Text("123\t456\t789\t1000\t5.3\thive and hadoop\t1.\tNULL");
      String s = "123\t456\t789\t1000\t5.3\thive and hadoop\tNULL\tNULL";
      Object[] expectedFieldsData = { new ByteWritable((byte)123),
          new ShortWritable((short)456), new IntWritable(789),
          new LongWritable(1000), new DoubleWritable(5.3), new Text("hive and hadoop"), null,
          null
      };
     
View Full Code Here

      serDe.initialize(conf, tbl);
     
      // Data
      Text t = new Text("123\t456\t789\t1000\t5.3\thive and hadoop\t1.\ta\tb\t");
      String s = "123\t456\t789\t1000\t5.3\thive and hadoop\tNULL\ta\tb\t";
      Object[] expectedFieldsData = { new ByteWritable((byte)123),
          new ShortWritable((short)456), new IntWritable(789),
          new LongWritable(1000), new DoubleWritable(5.3), new Text("hive and hadoop"), null,
          new Text("a\tb\t")
      };
     
View Full Code Here

      serDe.initialize(conf, tbl);
     
      // Data
      Text t = new Text("123\t456\t789\t1000\t5.3\thive and hadoop\t1.\ta\tb\t");
      String s = "123\t456\t789\t1000\t5.3\thive and hadoop\tNULL\ta";
      Object[] expectedFieldsData = { new ByteWritable((byte)123),
          new ShortWritable((short)456), new IntWritable(789),
          new LongWritable(1000), new DoubleWritable(5.3), new Text("hive and hadoop"), null,
          new Text("a")
      };
     
View Full Code Here

      serDe.initialize(conf, tbl);
     
      // Data
      Text t = new Text("123\t456\t789\t1000\t5.3\t");
      String s = "123\t456\t789\t1000\t5.3\t\tNULL\tNULL";
      Object[] expectedFieldsData = { new ByteWritable((byte)123),
          new ShortWritable((short)456), new IntWritable(789),
          new LongWritable(1000), new DoubleWritable(5.3), new Text(""), null,
          null
      };
     
View Full Code Here

            assert(b == 1 || b == 2);
            r.set(b == 2);
            return r;
          }
          case BYTE: {
            ByteWritable r = reuse == null ? new ByteWritable() : (ByteWritable)reuse;
            r.set((byte)(buffer.read(invert) ^ 0x80));
            return r;
          }
          case SHORT: {
            ShortWritable r = reuse == null ? new ShortWritable() : (ShortWritable)reuse;
            int v = buffer.read(invert) ^ 0x80;
            v = (v << 8) + (buffer.read(invert) & 0xff);
            r.set((short)v);
            return r;
          }
          case INT: {
            IntWritable r = reuse == null ? new IntWritable() : (IntWritable)reuse;
            int v = buffer.read(invert) ^ 0x80;
            for (int i=0; i<3; i++) {
              v = (v << 8) + (buffer.read(invert) & 0xff);
            }
            r.set(v);
            return r;
          }
          case LONG: {
            LongWritable r = reuse == null ? new LongWritable() : (LongWritable)reuse;
            long v = buffer.read(invert) ^ 0x80;
            for (int i=0; i<7; i++) {
              v = (v << 8) + (buffer.read(invert) & 0xff);
            }
            r.set(v);
            return r;
          }
          case FLOAT: {
            FloatWritable r = reuse == null ? new FloatWritable() : (FloatWritable)reuse;
            int v = 0;
            for (int i=0; i<4; i++) {
              v = (v << 8) + (buffer.read(invert) & 0xff);
            }
            if ((v & (1<<31)) == 0) {
              // negative number, flip all bits
              v = ~v;
            } else {
              // positive number, flip the first bit
              v = v ^ (1<<31);
            }
            r.set(Float.intBitsToFloat(v));
            return r;
          }
          case DOUBLE: {
            DoubleWritable r = reuse == null ? new DoubleWritable() : (DoubleWritable)reuse;
            long v = 0;
            for (int i=0; i<8; i++) {
              v = (v << 8) + (buffer.read(invert) & 0xff);
            }
            if ((v & (1L<<63)) == 0) {
              // negative number, flip all bits
              v = ~v;
            } else {
              // positive number, flip the first bit
              v = v ^ (1L<<63);
            }
            r.set(Double.longBitsToDouble(v));
            return r;
          }
          case STRING: {
            Text r = reuse == null ? new Text() : (Text)reuse;
            // Get the actual length first
            int start = buffer.tell();
            int length = 0;
            do {
              byte b = buffer.read(invert);
              if (b == 0) {
                // end of string
                break;
              }
              if (b == 1) {
                // the last char is an escape char. read the actual char
                buffer.read(invert);
              }
              length ++;
            } while (true);
           
            if (length == buffer.tell() - start) {
              // No escaping happened, so we are already done.
              r.set(buffer.getData(), start, length);
            } else {
              // Escaping happened, we need to copy byte-by-byte.
              // 1. Set the length first.
              r.set(buffer.getData(), start, length);
              // 2. Reset the pointer.
              buffer.seek(start);
              // 3. Copy the data.
              byte[] rdata = r.getBytes();
              for (int i=0; i<length; i++) {
                byte b = buffer.read(invert);
                if (b == 1) {
                  // The last char is an escape char, read the actual char.
                  // The serialization format escape \0 to \1, and \1 to \2,
                  // to make sure the string is null-terminated.
                  b = (byte)(buffer.read(invert) - 1);
                }
                rdata[i] = b;
              }
              // 4. Read the null terminator.
              byte b = buffer.read(invert);
              assert(b == 0);
            }
            return r;
          }
          default: {
            throw new RuntimeException("Unrecognized type: " + ptype.getPrimitiveCategory());
          }
        }
      }
      case LIST: {
        ListTypeInfo ltype = (ListTypeInfo)type;
        TypeInfo etype = ltype.getListElementTypeInfo();
       
        // Create the list if needed
        ArrayList<Object> r = reuse == null ? new ArrayList<Object>() : (ArrayList<Object>)reuse;

        // Read the list
        int size = 0;
        while (true) {
          int more = buffer.read(invert);
          if (more == 0) {
            // \0 to terminate
            break;
          }
          // \1 followed by each element
          assert(more == 1);
          if (size == r.size()) {
            r.add(null);
          }
          r.set(size, deserialize(buffer, etype, invert, r.get(size)));
          size++;
        }
        // Remove additional elements if the list is reused
        while (r.size() > size) {
          r.remove(r.size()-1);
        }
        return r;
      }     
      case MAP: {
        MapTypeInfo mtype = (MapTypeInfo)type;
        TypeInfo ktype = mtype.getMapKeyTypeInfo();
        TypeInfo vtype = mtype.getMapValueTypeInfo();
       
        // Create the map if needed
        Map<Object, Object> r;
        if (reuse == null) {
          r = new HashMap<Object, Object>();
        } else {
          r = (HashMap<Object, Object>)reuse;
          r.clear();
        }

        // Read the map
        int size = 0;
        while (true) {
          int more = buffer.read(invert);
          if (more == 0) {
            // \0 to terminate
            break;
          }
          // \1 followed by each key and then each value
          assert(more == 1);
          Object k = deserialize(buffer, ktype, invert, null);
          Object v = deserialize(buffer, vtype, invert, null);
          r.put(k, v);
        }
        return r;
      }
      case STRUCT: {
        StructTypeInfo stype = (StructTypeInfo)type;
        List<TypeInfo> fieldTypes = stype.getAllStructFieldTypeInfos();
        int size = fieldTypes.size();
        // Create the struct if needed
        ArrayList<Object> r = reuse == null ? new ArrayList<Object>(size) : (ArrayList<Object>)reuse;
        assert(r.size() <= size);
        // Set the size of the struct
        while (r.size() < size) {
          r.add(null);
        }
        // Read one field by one field
        for (int eid = 0; eid < size; eid++) {
          r.set(eid, deserialize(buffer, fieldTypes.get(eid), invert, r.get(eid)));
        }
        return r;
      }
      default: {
        throw new RuntimeException("Unrecognized type: " + type.getCategory());
View Full Code Here

TOP

Related Classes of org.apache.hadoop.hive.serde2.io.ByteWritable

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.