序列化serde

一、背景

1、当进程在进行远程通信时,彼此可以发送各种类型的数据,无论是什么类型的数据都会以二进制序列的形式在网络上传送。

     发送方需要把对象转化为字节序列才可在网络上传输,称为对象序列化;

     接收方则需要把字节序列恢复为对象,称为对象的反序列化。

2、Hive的反序列化是对key/value反序列化成hive table的每个列的值。

3、Hive可以方便的将数据加载到表中而不需要对数据进行转换,这样在处理海量数据时可以节省大量的时间。

二、技术细节

1、SerDe是Serialize/Deserilize的简称,目的是用于序列化和反序列化。

2、用户在建表时可以用自定义的SerDe或使用Hive自带的SerDe,SerDe能为表指定列,且对列指定相应的数据。

    创建指定SerDe表时,使用row format row_format参数

 

    ROW FORMAT SERDE          -------------------------------------指定使用的Serde,记录的解析是由序列化器/反序列化器(缩写为Serde)来控制的
    'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
    WITH SERDEPROPERTIES (    ----------------------------------传递配置信息
   'field.delim'='\u0001',
   'serialization.format'='\u0001')
   STORED AS INPUTFORMAT --------------------------------------输入格式,记录的编码由inputformat对象控制
  'org.apache.hadoop.mapred.TextInputFormat'
  OUTPUTFORMAT  -----------------------------------------------------输出格式,将查询结果保存到文件中,由outputformat对象控制
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';

 

posted on 2018-12-27 15:00  happygril3  阅读(396)  评论(0)    收藏  举报

导航