serde2.objectinspector和typeinfo包之间的区别

时间:2012-04-11 15:03:53

标签: hadoop hive

这两个包之间有什么区别:

  • org.apache.hadoop.hive.serde2.objectinspector
  • org.apache.hadoop.hive.serde2.typeinfo

是一个较新的API吗?它们都是最新的,但有些不同吗?他们看起来很像我:/

2 个答案:

答案 0 :(得分:4)

  1. 由于两个包都在说明符serde2下,我认为它们都在当前使用
  2. TypeInfo存储类型的信息,每个类型只包含一个对象来表示它。所以,TypeInfo只是对象类型(类别,类型名称等)的只读信息处理
  3. Hive具有针对给定类型的多种内存数据格式(例如,Integer:Integer,IntWritable和LazyInteger)。数据存储在对象检查器中存储的对象和格式/操作中。所以数据对象和objectinspector表示一个数据单元,感觉就像你可以使用objectinspector提供的信息反序列化对象。

答案 1 :(得分:0)

ObjectInspectors用于序列化对象,比如假设您正在创建JSON serde并使用JSON库将Java对象转换为JSON,反之亦然,那么您收到的Hive对象是行的内部表示,这需要转换为java对象,将进一步转换为JSON。对于Hive到JAVA的转换,我们需要objectInspectors,例如ListObjectInspector。

类似地,当您反序列化时,将JSON转换为Hive行对象,为此我们使用TypeInfo类,例如ListTypeInfo。