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

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


    try {
      LazyShort b = new LazyShort(LazyPrimitiveObjectInspectorFactory.lazyShortObjectInspector);
      initLazyObject(b,new byte[]{'0'}, 0, 0);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'0'}, 0, 1);
      assertEquals(new ShortWritable((short)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '0'}, 0, 2);
      assertEquals(new ShortWritable((short)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '0'}, 0, 2);
      assertEquals(new ShortWritable((short)0), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 1);
      assertEquals(new ShortWritable((short)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '-', '1'}, 1, 2);
      assertEquals(new ShortWritable((short)-1), b.getWritableObject());
      initLazyObject(b,new byte[]{'a', '+', '1'}, 1, 2);
      assertEquals(new ShortWritable((short)1), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '1', '2', '8'}, 0, 4);
      assertEquals(new ShortWritable((short)-128), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '1', '2', '7'}, 0, 4);
      assertEquals(new ShortWritable((short)127), b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '3', '2', '7', '6', '8'}, 0, 6);
      assertEquals(new ShortWritable((short)-32768), b.getWritableObject());
      initLazyObject(b,new byte[]{'+', '3', '2', '7', '6', '7'}, 0, 6);
      assertEquals(new ShortWritable((short)32767), b.getWritableObject());

      initLazyObject(b,new byte[]{'a', '1', 'b'}, 1, 2);
      assertNull(b.getWritableObject());
      initLazyObject(b,new byte[]{'-', '3', '2', '7', '6', '9'}, 0, 6);
      assertNull(b.getWritableObject());
View Full Code Here


      // Short
      Converter shortConverter = ObjectInspectorConverters.getConverter(
          PrimitiveObjectInspectorFactory.javaIntObjectInspector,
          PrimitiveObjectInspectorFactory.writableShortObjectInspector);
      assertEquals("ShortConverter",
          new ShortWritable((short)0),
          shortConverter.convert(Integer.valueOf(0))
          );
      assertEquals("ShortConverter",
          new ShortWritable((short)1),
          shortConverter.convert(Integer.valueOf(1))
          );
     
      // Int
      Converter intConverter = ObjectInspectorConverters.getConverter(
View Full Code Here

      }
      return true;
    }

    public ShortWritable terminatePartial() {
      return mEmpty ? null : new ShortWritable(mMax);
    }
View Full Code Here

    public boolean merge(ShortWritable o) {
      return iterate(o);
    }

    public ShortWritable terminate() {
      return mEmpty ? null : new ShortWritable(mMax);
    }
View Full Code Here

*/
public class LazyShort extends LazyPrimitive<LazyShortObjectInspector, ShortWritable> {

  public LazyShort(LazyShortObjectInspector oi) {
    super(oi);
    data = new ShortWritable();
  }
View Full Code Here

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

    return ((ShortWritable)o).get();
  }

  @Override
  public Object copyObject(Object o) {
    return o == null ? null : new ShortWritable(((ShortWritable)o).get());
  }
View Full Code Here

    return o == null ? null : Short.valueOf(((ShortWritable)o).get());
  }
 
  @Override
  public Object create(short value) {
    return new ShortWritable(value);
  }
View Full Code Here

    super(PrimitiveObjectInspectorUtils.shortTypeEntry);
  }
 
  @Override
  public Object getPrimitiveWritableObject(Object o) {
    return o == null ? null : new ShortWritable(((Short)o).shortValue());
  }
View Full Code Here

            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.ShortWritable

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.