What is the format of your data? TBinaryProtocol does not work with TextFile format, as you can imagine.
On 3/10/10, Anty <[email protected]> wrote: > Hi: ALL > > I encounter a problem, any suggestion will be appreciated! > MY hive version is 0.30.0 > I create a table in CLI. > CREATE TABLE table2 (boo int,bar string) > ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe' > WITH SERDEPROPERTIES ( > 'serialization.format'=org.apache.hadoop.hive.serde2.thrift.TCTLSeparatedProtocol') > STORED AS TEXTFILE; > Then a load some data to table2. > INSERT OVERWRITE TABLE table2 SELECT foo,bar from pokes. > Everything is OK. Also , i can issue queries against table2. > > But, when i change the protocol to TBinaryProtocol, > > > CREATE TABLE table1 (boo int,bar string) > ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe' > WITH SERDEPROPERTIES ( > 'serialization.format'='org.apache.thrift.protocol.TBinaryProtocol') > STORED AS TEXTFILE; > > then load some data to table1 ,there is some error ,the loading process > can't be completed. > > java.lang.RuntimeException: org.apache.hadoop.hive.serde2.SerDeException: > org.apache.thrift.transport.TTransportException: Cannot read. Remote side > has closed. Tried to read 1 bytes, but only got 0 bytes. at > org.apache.hadoop.hive.ql.exec.ExecMapper.map(ExecMapper.java:182) at > org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50) at > org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358) at > org.apache.hadoop.mapred.MapTask.run(MapTask.java:307) at > org.apache.hadoop.mapred.Child.main(Child.java:170) Caused by: > org.apache.hadoop.hive.ql.metadata.HiveException: > org.apache.hadoop.hive.serde2.SerDeException: > org.apache.thrift.transport.TTransportException: Cannot read. Remote side > has closed. Tried to read 1 bytes, but only got 0 bytes. at > org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:328) at > org.apache.hadoop.hive.ql.exec.ExecMapper.map(ExecMapper.java:165) ... 4 > more Caused by: org.apache.hadoop.hive.serde2.SerDeException: > org.apache.thrift.transport.TTransportException: Cannot read. Remote side > has closed. Tried to read 1 bytes, but only got 0 bytes. at > org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe.deserialize(DynamicSerDe.java:135) > at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:319) > ... 5 more Caused by: org.apache.thrift.transport.TTransportException: > Cannot read. Remote side has closed. Tried to read 1 bytes, but only got 0 > bytes. at org.apache.thrift.transport.TTransport.readAll(TTransport.java:86) > at > org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:314) > at > org.apache.thrift.protocol.TBinaryProtocol.readByte(TBinaryProtocol.java:247) > at > org.apache.thrift.protocol.TBinaryProtocol.readFieldBegin(TBinaryProtocol.java:216) > at > org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDeFieldList.deserialize(DynamicSerDeFieldList.java:163) > at > org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDeStructBase.deserialize(DynamicSerDeStructBase.java:59) > at > org.apache.hadoop.hive.serde2.dynamic_type.DynamicSerDe.deserialize(DynamicSerDe.java:131) > ... 6 more > > > If there is something wrong with TBinaryProtocol? > > > > -- > Best Regards > Anty Rao > -- Sent from my mobile device Yours, Zheng
