내 문제를 간소화하기 위해 두 개의 개행 문자로 구분 된 "레코드"가있는 텍스트 파일 집합이 있습니다.텍스트 파일의 텍스트 파일을 Hadoop의 단일 레코드로 처리하기
'여러 줄 문자'
'빈 줄'
'여러 줄 문자'
'빈 줄'
등처럼.
각 다중 선 단위를 개별적으로 변환 한 다음 mapreduce를 수행해야합니다.
그러나 hadoop 코드 상용구의 기본 단어 개수 설정에서 다음 함수의 변수 value
에 대한 입력이 단 한 줄에 불과하며 입력이 이전 입력과 연속적이라는 보장이 없음을 알고 있습니다. 선.
public void map(LongWritable key, Text value,
OutputCollector<Text, IntWritable> output,
Reporter reporter) throws IOException ;
그리고 입력 value
여러 줄 텍스트를 구분 실제로 이중 줄 바꿈 한 단위라고 할 필요.
일부 검색은 RecordReader
클래스와 getSplits
메서드를 사용했지만 머리를 감쌀 수있는 간단한 코드 예제는 아닙니다.
다른 해결책은 여러 줄 문자의 모든 줄 바꿈 문자를 공백 문자로 바꾸고 그 문자로 끝내는 것입니다. 나는 약간의 텍스트가 있고 실행 시간면에서 시간이 많이 걸리기 때문에 이것을하지 않을 것입니다. 내가 이렇게하면 hadoop을 통해 처리하는 것이 나에게 가장 매력적 일 수 있기 때문에 많은 코드를 수정해야한다.
답장은 사실 64MB를 초과하는 파일 또는 hadoop이 파일 분할을 시작하는 파일을 처리해야 할 때 유용합니다. – JasonMond