복붙노트

[HADOOP] Hadoop Writable과 java.io.serialization의 연결 및 차이점은 무엇입니까?

HADOOP

Hadoop Writable과 java.io.serialization의 연결 및 차이점은 무엇입니까?

Writable 인터페이스를 구현하기 위해 Hadoop에서 객체를 직렬화 할 수 있습니다. 그렇다면 Hadoop Writable과 java.io.serialization의 관련성과 차이점은 무엇입니까?

해결법

  1. ==============================

    1.Java Serializable

    Java Serializable

    Serializable은 저장된 값의 클래스가 알려져 있다고 가정하지 않고 해당 클래스에 인스턴스를 태그 지정합니다. 클래스 이름, 필드 이름 및 유형 및 해당 수퍼 클래스를 포함하는 객체에 대한 메타 데이터를 씁니다. ObjectOutputStream과 ObjectInputStream은이를 다소 최적화하여 첫 번째 클래스 다음에 클래스의 인스턴스에 대해 5 바이트 핸들을 작성합니다. 그러나 핸들이있는 객체 시퀀스는 스트림 상태에 의존하기 때문에 무작위로 액세스 할 수 없습니다. 이것은 정렬과 같은 것을 복잡하게합니다.

    Hadoop Writable

    "Writable"을 정의하는 동안 예상되는 클래스를 알 수 있습니다. 따라서 Writable은 직렬화 된 형식으로 형식을 저장하지 않습니다. 역 직렬화하는 동안 예상되는 내용을 알 수 있습니다. 예 : 입력 키가 LongWritable의 경우, 빈 상태 (empty)의 LongWritable 인스턴스는 입력 데이터 스트림으로부터 스스로를 생성하도록 (듯이) 요구됩니다. 메타 정보를 저장할 필요가 없으므로 (클래스 이름, 필드, 유형, 수퍼 클래스)이 바이너리 파일은 훨씬 더 단순한 무작위 액세스와 높은 성능을 제공합니다.

    좋은 읽을 거리 :

    Java Serializable의 경우 :

    Hadoop Writable

  2. ==============================

    2.Doug Cutting의 말 :

    Doug Cutting의 말 :

    한 번이 스레드를 통과해야합니다.

  3. from https://stackoverflow.com/questions/16836607/what-are-the-connections-and-differences-between-hadoop-writable-and-java-io-ser by cc-by-sa and MIT license