Hey hive gurus - I'm creating some tables to represent thrift structs, and noticed when setting the serde the table schema changes. For example:
hive> describe foo_test; OK start_time_ms bigint bar struct<transaction_id:string> Set the serde: hive> alter table foo_test set serde "com.twitter.elephantbird.hive.serde.ThriftSerDe" with serdeproperties ("serialization.class"="com.foo.Foo"); Now the schema is different. Notice how the field type is a class name - it matches the thrift struct type stored in the field. hive> describe foo_test; OK start_time_ms bigint from deserializer bar com.foo.Bar from deserializer I've spent some time watching how the object inspectors work in a debugger, and its correctly identifying the subfields inside field "bar". However, the table column type gets set to the class name, instead of expanding to the schema of the thrift struct. Can anyone clue me into how this is intended to work? I'm using the standard thrift object inspector, and the serde I'm writing is: https://github.com/kevinweil/elephant-bird/blob/master/src/java/com/twitter/elephantbird/hive/serde/ThriftSerDe.java Any help in understanding how to correctly set the table schema would be greatly appreciated. Thanks! Travis