복붙노트

[HADOOP] hadoop은 어떻게 입력 파일을 읽습니까?

HADOOP

hadoop은 어떻게 입력 파일을 읽습니까?

hadoop mapreduce로 분석 할 CSV 파일이 있습니다. 만약 hadoop이 줄 단위로 그것을 파싱하는지 궁금합니다. 그렇다면 필드를 분석하려면 쉼표로 문자열 분할을 사용하고 싶습니다. 아니면 csv를 구문 분석하고 그것을 hadoop에 공급하는 다른 더 좋은 방법이 있습니까? 파일은 쉼표로 구분 된 10GB입니다. 내가 hadoop와 자바를 사용하고 싶습니다. 아래 map () 메소드의 Tex 유형의 "value"매개 변수에는 Map / Reduce?가 구문 분석 한 각 행이 들어 있습니다. -이게 내가 가장 혼란스러워하는 곳이야.

이것은 내 코드입니다.

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
    try {
       String[] tokens = value.toString().split(",");

       String crimeType = tokens[5].trim();      
       int year = Integer.parseInt(tokens[17].trim()); 

       context.write(crimeType, year);

     } catch (Exception e) {...}
 }

해결법

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

    1.예, 기본적으로 Hadoop은 입력 파일의 라인별로 매퍼를 공급하는 텍스트 입력 판독기를 사용합니다. 매퍼의 키는 읽은 행의 오프셋입니다. CSV 파일은 단일 열 / 필드에 줄 바꿈이 포함될 수 있으므로주의하십시오. 다음과 같은 CSV 입력 리더를 찾아 볼 수도 있습니다. https://github.com/mvallebr/CSVInputFormat/blob/master/src/main/java/org/apache/hadoop/mapreduce/lib/input/CSVNLineInputFormat. 자바

    예, 기본적으로 Hadoop은 입력 파일의 라인별로 매퍼를 공급하는 텍스트 입력 판독기를 사용합니다. 매퍼의 키는 읽은 행의 오프셋입니다. CSV 파일은 단일 열 / 필드에 줄 바꿈이 포함될 수 있으므로주의하십시오. 다음과 같은 CSV 입력 리더를 찾아 볼 수도 있습니다. https://github.com/mvallebr/CSVInputFormat/blob/master/src/main/java/org/apache/hadoop/mapreduce/lib/input/CSVNLineInputFormat. 자바

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

    2.이게 니가 필요한거야?

    이게 니가 필요한거야?

  3. ==============================

    3.hadoop은 이미 csv 파일을 구문 분석하고 처리 할 때 사용할 수 있습니다. Hadoop은 맵 작업을 위해 키 - 값 쌍을 필요로합니다.

    hadoop은 이미 csv 파일을 구문 분석하고 처리 할 때 사용할 수 있습니다. Hadoop은 맵 작업을 위해 키 - 값 쌍을 필요로합니다.

    따라서 파일에서 데이터를 가져와 키 / 값 측면에서 Hadoop의 mapper 클래스에 제공하려면 opencsv API와 같은 것을 사용하십시오.

    자세한 설명은이 링크를보십시오.

  4. from https://stackoverflow.com/questions/19470453/how-does-hadoop-read-input-file by cc-by-sa and MIT license