파일이 HDFS에 저장되는 동안 이름 노드별로 블록으로 분할된다는 사실을 알고 있습니다. 그러나 파일이 분할되면 블록에 행의 일부가 포함될 가능성이 있습니다. 내 이해가 맞습니까? 그래서 만약 내가 각 라인을 읽을 필요가지도 작업을해야합니다 매퍼에 의해 처리하는 라인의 일부를 그리워합니다.네임 노드 파일을 블록으로 나눕니다.
감사합니다.
파일이 HDFS에 저장되는 동안 이름 노드별로 블록으로 분할된다는 사실을 알고 있습니다. 그러나 파일이 분할되면 블록에 행의 일부가 포함될 가능성이 있습니다. 내 이해가 맞습니까? 그래서 만약 내가 각 라인을 읽을 필요가지도 작업을해야합니다 매퍼에 의해 처리하는 라인의 일부를 그리워합니다.네임 노드 파일을 블록으로 나눕니다.
감사합니다.
예, 한 줄을 두 개의 블록으로 분할 할 수 있습니다. 블록 끝의 맵퍼에서 사용하는 Reader는 다음 블록의 첫 번째 행을 읽고 처리합니다. 첫 번째 블록이 아닌 경우 판독기는 항상 첫 번째 행을 건너 뜁니다. 적어도 텍스트 파일. 다른 형식은 다른 방식으로 작동합니다.
당신은 @ RojoSam의 대답에 라인 또한
의 어떤 부분을 놓치지 않습니다, SPLIT_SLOP
매개 변수는 다른 블록에서 하나의 파일의 데이터를 읽어 RecordReader에 의해 사용된다. SPLIT_SLOP
은 단일 데이터 노드에서 데이터를 완전히 사용할 수없는 경우 원격 호스트에서 % of of data를 읽도록 hadoop 작업을 제공합니다.