복붙노트

[HADOOP] 하둡의 텍스트와 문자열의 차이점

HADOOP

하둡의 텍스트와 문자열의 차이점

Hadoop 프레임 워크에서 org.apache.hadoop.io.Text와 java.lang.String의 차이점은 무엇입니까?

왜 새로운 Text 클래스를 도입하는 대신 String을 사용할 수 없습니까?

차이점을 조사한 결과 인코딩 형식과 관련이 있다는 것을 알았습니다. 그러나 나는 아직 그것을 이해하지 못한다.

다른 사람이 차이점을 설명 할 수 있습니까 (예 : 해당되는 경우)?

해결법

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

    1.Text 객체의 2 진 표현은 다음을 포함하는 가변 길이 정수입니다. 캐릭터 라인의 UTF-8 표현의 바이트 수. 그 뒤에 UTF-8 바이트 자체.

    Text 객체의 2 진 표현은 다음을 포함하는 가변 길이 정수입니다. 캐릭터 라인의 UTF-8 표현의 바이트 수. 그 뒤에 UTF-8 바이트 자체.

    텍스트는 더 이상 사용되지 않는 UTF8 클래스를 대신합니다. 32,767 바이트를 넘는 인코딩을 지원하지 않기 때문에 Java의 수정 된 UTF-8을 사용했습니다.

    또한 Text는 표준 UTF-8을 사용하기 때문에 UTF-8을 이해하는 다른 도구와 상호 운용하기가 더 쉽습니다.

    다음은 String과 관련된 기능의 간략한 차이점 중 일부입니다.

    색인 생성 : 표준 UTF-8 사용에 중점을두고 있기 때문에 몇 가지 차이점이 있습니다. Text와 Java String 클래스 사이 Text 클래스의 인덱싱은 문자열의 유니 코드 문자가 아니라 인코딩 된 바이트 시퀀스의 위치를 ​​기준으로합니다. Java char 코드 단위 (String의 경우와 동일).

    예를 들어, charAt ()는 유니 코드 코드 포인트를 나타내는 int를 반환합니다. char를 반환하는 문자열 변형입니다.

    되풀이: 텍스트에서 유니 코드 문자를 반복하는 것은 바이트를 사용하여 복잡합니다. 인덱스를 증가시킬 수 없으므로 인덱싱에 대한 오프셋을 사용합니다.

    변하기 쉬운: String과의 또 다른 차이점은 텍스트가 변경 가능하다는 것입니다 (싱글 톤 인 NullWritable을 제외하고 Hadoop의 모든 Writable 구현과 유사 함). 재사용 할 수 있습니다. Text 인스턴스는 set () 메서드 중 하나를 호출하여 인스턴스에 전달됩니다.

    문자열에 의지하는 것 :

    텍스트에는 문자열을 조작하기위한 API가 풍부하지 않습니다. java.lang.String이므로 많은 경우 Text 객체를 String으로 변환해야합니다. 이것은 toString () 메서드를 사용하여 일반적인 방식으로 수행됩니다.

    자세한 내용은 최종 가이드를 참조하십시오.

  2. from https://stackoverflow.com/questions/19851665/difference-between-text-and-string-in-hadoop by cc-by-sa and MIT license