Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
Reviewed
-
Maps thrift's set type to hive's array type.
Description
Thrift supports List, Map and Struct complex types, which get mapped to Array, Map and Struct complex types in Hive respectively. However thrift Set type doesn't seem to be working.
Here is an example thrift struct:
namespace java sample.thrift struct setrow { 1: required set<i32> ids, 2: required string name, }
A Hive table is created with ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.thrift.ThriftDeserializer' WITH SERDEPROPERTIES ('serialization.class'='sample.thrift.setrow', 'serialization.format'='org.apache.thrift.protocol.TBinaryProtocol').
Describing the table shows:
hive> describe settable; OK ids struct<> from deserializer name string from deserializer
Issuing a select query on set column throws SemanticException:
hive> select ids from settable; FAILED: SemanticException java.lang.IllegalArgumentException: Error: name expected at the position 7 of 'struct<>' but '>' is found.