Search in sources :

Example 1 with TMemoryBuffer

use of org.apache.thrift.transport.TMemoryBuffer in project hive by apache.

the class TestTCTLSeparatedProtocol method testWrites.

public void testWrites() throws Exception {
    TMemoryBuffer trans = new TMemoryBuffer(1024);
    TCTLSeparatedProtocol prot = new TCTLSeparatedProtocol(trans, 1024);
    prot.writeStructBegin(new TStruct());
    prot.writeFieldBegin(new TField());
    prot.writeI32(100);
    prot.writeFieldEnd();
    prot.writeFieldBegin(new TField());
    prot.writeListBegin(new TList());
    prot.writeDouble(348.55);
    prot.writeDouble(234.22);
    prot.writeListEnd();
    prot.writeFieldEnd();
    prot.writeFieldBegin(new TField());
    prot.writeString("hello world!");
    prot.writeFieldEnd();
    prot.writeFieldBegin(new TField());
    prot.writeMapBegin(new TMap());
    prot.writeString("key1");
    prot.writeString("val1");
    prot.writeString("key2");
    prot.writeString("val2");
    prot.writeString("key3");
    prot.writeString("val3");
    prot.writeMapEnd();
    prot.writeFieldEnd();
    prot.writeFieldBegin(new TField());
    prot.writeListBegin(new TList());
    prot.writeString("elem1");
    prot.writeString("elem2");
    prot.writeListEnd();
    prot.writeFieldEnd();
    prot.writeFieldBegin(new TField());
    prot.writeString("bye!");
    prot.writeFieldEnd();
    prot.writeStructEnd();
    trans.flush();
    byte[] b = new byte[3 * 1024];
    int len = trans.read(b, 0, b.length);
    String test = new String(b, 0, len);
    String testRef = "100348.55234.22hello world!key1val1key2val2key3val3elem1elem2bye!";
    assertTrue(test.equals(testRef));
    trans = new TMemoryBuffer(1023);
    trans.write(b, 0, len);
    //
    // read back!
    //
    prot = new TCTLSeparatedProtocol(trans, 10);
    prot.initialize(new Configuration(), new Properties());
    // 100 is the start
    prot.readStructBegin();
    prot.readFieldBegin();
    assertTrue(prot.readI32() == 100);
    prot.readFieldEnd();
    // let's see if doubles work ok
    prot.readFieldBegin();
    TList l = prot.readListBegin();
    assertTrue(l.size == 2);
    assertTrue(prot.readDouble() == 348.55);
    assertTrue(prot.readDouble() == 234.22);
    prot.readListEnd();
    prot.readFieldEnd();
    // nice message
    prot.readFieldBegin();
    assertTrue(prot.readString().equals("hello world!"));
    prot.readFieldEnd();
    // 3 element map
    prot.readFieldBegin();
    TMap m = prot.readMapBegin();
    assertTrue(m.size == 3);
    assertTrue(prot.readString().equals("key1"));
    assertTrue(prot.readString().equals("val1"));
    assertTrue(prot.readString().equals("key2"));
    assertTrue(prot.readString().equals("val2"));
    assertTrue(prot.readString().equals("key3"));
    assertTrue(prot.readString().equals("val3"));
    prot.readMapEnd();
    prot.readFieldEnd();
    // the 2 element list
    prot.readFieldBegin();
    l = prot.readListBegin();
    assertTrue(l.size == 2);
    assertTrue(prot.readString().equals("elem1"));
    assertTrue(prot.readString().equals("elem2"));
    prot.readListEnd();
    prot.readFieldEnd();
    // final string
    prot.readFieldBegin();
    assertTrue(prot.readString().equals("bye!"));
    prot.readFieldEnd();
    // shouldl return nulls at end
    prot.readFieldBegin();
    assertNull(prot.readString());
    prot.readFieldEnd();
    // shouldl return nulls at end
    prot.readFieldBegin();
    assertNull(prot.readString());
    prot.readFieldEnd();
    prot.readStructEnd();
}
Also used : TList(org.apache.thrift.protocol.TList) TMemoryBuffer(org.apache.thrift.transport.TMemoryBuffer) TField(org.apache.thrift.protocol.TField) Configuration(org.apache.hadoop.conf.Configuration) TStruct(org.apache.thrift.protocol.TStruct) Properties(java.util.Properties) TCTLSeparatedProtocol(org.apache.hadoop.hive.serde2.thrift.TCTLSeparatedProtocol) TMap(org.apache.thrift.protocol.TMap)

Example 2 with TMemoryBuffer

use of org.apache.thrift.transport.TMemoryBuffer in project hive by apache.

the class TestTCTLSeparatedProtocol method testNulls.

public void testNulls() throws Exception {
    TMemoryBuffer trans = new TMemoryBuffer(1024);
    TCTLSeparatedProtocol prot = new TCTLSeparatedProtocol(trans, 10);
    prot.initialize(new Configuration(), new Properties());
    prot.writeStructBegin(new TStruct());
    prot.writeFieldBegin(new TField());
    prot.writeString(null);
    prot.writeFieldEnd();
    prot.writeFieldBegin(new TField());
    prot.writeString(null);
    prot.writeFieldEnd();
    prot.writeFieldBegin(new TField());
    prot.writeI32(100);
    prot.writeFieldEnd();
    prot.writeFieldBegin(new TField());
    prot.writeString(null);
    prot.writeFieldEnd();
    prot.writeFieldBegin(new TField());
    prot.writeMapBegin(new TMap());
    prot.writeString(null);
    prot.writeString(null);
    prot.writeString("key2");
    prot.writeString(null);
    prot.writeString(null);
    prot.writeString("val3");
    prot.writeMapEnd();
    prot.writeFieldEnd();
    prot.writeStructEnd();
    byte[] b = new byte[3 * 1024];
    int len = trans.read(b, 0, b.length);
    String written = new String(b, 0, len);
    String testRef = "\\N\\N100\\N\\N\\Nkey2\\N\\Nval3";
    assertTrue(testRef.equals(written));
    trans = new TMemoryBuffer(1023);
    trans.write(b, 0, len);
    prot = new TCTLSeparatedProtocol(trans, 3);
    prot.initialize(new Configuration(), new Properties());
    prot.readStructBegin();
    prot.readFieldBegin();
    String ret = prot.readString();
    prot.readFieldEnd();
    assertNull(ret);
    prot.readFieldBegin();
    ret = prot.readString();
    prot.readFieldEnd();
    assertNull(ret);
    prot.readFieldBegin();
    int ret1 = prot.readI32();
    prot.readFieldEnd();
    assertTrue(ret1 == 100);
    prot.readFieldBegin();
    ret1 = prot.readI32();
    prot.readFieldEnd();
    prot.readFieldBegin();
    TMap map = prot.readMapBegin();
    assertTrue(map.size == 3);
    assertNull(prot.readString());
    assertNull(prot.readString());
    assertTrue(prot.readString().equals("key2"));
    assertNull(prot.readString());
    assertNull(prot.readString());
    assertTrue(prot.readString().equals("val3"));
    prot.readMapEnd();
    prot.readFieldEnd();
    assertTrue(ret1 == 0);
}
Also used : TMemoryBuffer(org.apache.thrift.transport.TMemoryBuffer) Configuration(org.apache.hadoop.conf.Configuration) TField(org.apache.thrift.protocol.TField) Properties(java.util.Properties) TStruct(org.apache.thrift.protocol.TStruct) TCTLSeparatedProtocol(org.apache.hadoop.hive.serde2.thrift.TCTLSeparatedProtocol) TMap(org.apache.thrift.protocol.TMap)

Example 3 with TMemoryBuffer

use of org.apache.thrift.transport.TMemoryBuffer in project hive by apache.

the class TestTCTLSeparatedProtocol method testReads.

public void testReads() throws Exception {
    TMemoryBuffer trans = new TMemoryBuffer(1024);
    String foo = "Hello";
    String bar = "World!";
    String key = "22";
    String value = "TheValue";
    String key2 = "24";
    String value2 = "TheValueAgain";
    byte[] columnSeparator = { 1 };
    byte[] elementSeparator = { 2 };
    byte[] kvSeparator = { 3 };
    trans.write(foo.getBytes(), 0, foo.getBytes().length);
    trans.write(columnSeparator, 0, 1);
    trans.write(columnSeparator, 0, 1);
    trans.write(bar.getBytes(), 0, bar.getBytes().length);
    trans.write(columnSeparator, 0, 1);
    trans.write(key.getBytes(), 0, key.getBytes().length);
    trans.write(kvSeparator, 0, 1);
    trans.write(value.getBytes(), 0, value.getBytes().length);
    trans.write(elementSeparator, 0, 1);
    trans.write(key2.getBytes(), 0, key2.getBytes().length);
    trans.write(kvSeparator, 0, 1);
    trans.write(value2.getBytes(), 0, value2.getBytes().length);
    trans.flush();
    // use 3 as the row buffer size to force lots of re-buffering.
    TCTLSeparatedProtocol prot = new TCTLSeparatedProtocol(trans, 1024);
    prot.initialize(new Configuration(), new Properties());
    prot.readStructBegin();
    prot.readFieldBegin();
    String hello = prot.readString();
    prot.readFieldEnd();
    assertTrue(hello.equals(foo));
    prot.readFieldBegin();
    assertTrue(prot.readString().equals(""));
    prot.readFieldEnd();
    prot.readFieldBegin();
    assertTrue(prot.readString().equals(bar));
    prot.readFieldEnd();
    prot.readFieldBegin();
    TMap mapHeader = prot.readMapBegin();
    assertTrue(mapHeader.size == 2);
    assertTrue(prot.readI32() == 22);
    assertTrue(prot.readString().equals(value));
    assertTrue(prot.readI32() == 24);
    assertTrue(prot.readString().equals(value2));
    prot.readMapEnd();
    prot.readFieldEnd();
    prot.readFieldBegin();
    hello = prot.readString();
    prot.readFieldEnd();
    assertNull(hello);
    prot.readStructEnd();
}
Also used : TMemoryBuffer(org.apache.thrift.transport.TMemoryBuffer) Configuration(org.apache.hadoop.conf.Configuration) Properties(java.util.Properties) TCTLSeparatedProtocol(org.apache.hadoop.hive.serde2.thrift.TCTLSeparatedProtocol) TMap(org.apache.thrift.protocol.TMap)

Example 4 with TMemoryBuffer

use of org.apache.thrift.transport.TMemoryBuffer in project hive by apache.

the class HBaseReadWrite method dumpThriftObject.

private String dumpThriftObject(TBase obj) throws TException, UnsupportedEncodingException {
    TMemoryBuffer buf = new TMemoryBuffer(1000);
    TProtocol protocol = new TSimpleJSONProtocol(buf);
    obj.write(protocol);
    return buf.toString("UTF-8");
}
Also used : TSimpleJSONProtocol(org.apache.thrift.protocol.TSimpleJSONProtocol) TMemoryBuffer(org.apache.thrift.transport.TMemoryBuffer) TProtocol(org.apache.thrift.protocol.TProtocol)

Example 5 with TMemoryBuffer

use of org.apache.thrift.transport.TMemoryBuffer in project distributedlog by twitter.

the class BKDLConfig method serialize.

String serialize(BKDLConfigFormat configFormat) {
    TMemoryBuffer transport = new TMemoryBuffer(BUFFER_SIZE);
    TJSONProtocol protocol = new TJSONProtocol(transport);
    try {
        configFormat.write(protocol);
        transport.flush();
        return transport.toString("UTF-8");
    } catch (TException e) {
        throw new RuntimeException("Failed to serialize BKDLConfig : ", e);
    } catch (UnsupportedEncodingException e) {
        throw new RuntimeException("Failed to serialize BKDLConfig : ", e);
    }
}
Also used : TException(org.apache.thrift.TException) TJSONProtocol(org.apache.thrift.protocol.TJSONProtocol) TMemoryBuffer(org.apache.thrift.transport.TMemoryBuffer) UnsupportedEncodingException(java.io.UnsupportedEncodingException)

Aggregations

TMemoryBuffer (org.apache.thrift.transport.TMemoryBuffer)12 Properties (java.util.Properties)5 Configuration (org.apache.hadoop.conf.Configuration)5 TCTLSeparatedProtocol (org.apache.hadoop.hive.serde2.thrift.TCTLSeparatedProtocol)5 TException (org.apache.thrift.TException)4 TField (org.apache.thrift.protocol.TField)3 TJSONProtocol (org.apache.thrift.protocol.TJSONProtocol)3 TMap (org.apache.thrift.protocol.TMap)3 TStruct (org.apache.thrift.protocol.TStruct)3 UnsupportedEncodingException (java.io.UnsupportedEncodingException)2 TList (org.apache.thrift.protocol.TList)2 IOException (java.io.IOException)1 TBinaryProtocol (org.apache.thrift.protocol.TBinaryProtocol)1 TCompactProtocol (org.apache.thrift.protocol.TCompactProtocol)1 TProtocol (org.apache.thrift.protocol.TProtocol)1 TSimpleJSONProtocol (org.apache.thrift.protocol.TSimpleJSONProtocol)1 Test (org.junit.Test)1