大数据面试题(三)----MapReduce面试题

“无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。”。

大数据面试宝典目录,请点击

MapReduce面试题

  1. 谈谈Hadoop 序列化和反序列化及自定义bean 对象实现序列化?
    1) 序列化和反序列化
    序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储(持久化)
    和网络传输。
    反序列化就是将收到字节序列(或其他数据传输协议)或者是硬盘的持久化数据,转换成内存
    中的对象。
    Java 的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外
    的信息(各种校验信息,header,继承体系等),不便于在网络中高效传输。所以,
    hadoop 自己开发了一套序列化机制(Writable),精简、高效。
    2) 自定义bean 对象要想序列化传输步骤及注意事项:
    (1) 必须实现Writable 接口
    (2) 反序列化时,需要反射调用空参构造函数,所以必须有空参构造
    (3) 重写序列化方法
    (4) 重写反序列化方法
    (5) 注意反序列化的顺序和序列化的顺序完全一致
    (6) 要想把结果显示在文件中,需要重写toString(),且用”\t”分开,方便后续用
    (7) 如果需要将自定义的bean 放在key 中传输,则还需要实现comparable 接口,因为mapreduce 框中的shuffle 过程一定会对key 进行排序

你可能感兴趣的:(【大数据面试宝典】)