[HADOOP] ArrayList 요소에 반복 가능
HADOOPArrayList 요소에 반복 가능
그래서지도 제작 (mapreduce) 작업을 구현하고 있습니다. 즉, 핵심 가치 쌍을 다루고 있습니다.
변수가 있습니다.
Iterable<FreqDataWritable> values
FreqDataWritable은 정보 조각을 포함하고있는 객체입니다 만, 현재는 보유하고있는 정보 중 getFilename ()에 의해 액세스되는 String에 대해서만 다루고 있습니다.
다음 루프가 있습니다.
ArrayList<String> filenames = new ArrayList<String>();
for(FreqDataWritable i : values) {
filenames.add(i.getFilename());
}
이제 배열 목록 파일 이름에 값을 인쇄하기 만하면됩니다.
for(int i = 0; i < filenames.size(); i++) {
System.out.println(filenames.get(i));
}
그러나 내가 이것을 할 때 파일 이름에있는 모든 것은 동일합니다. 인쇄 된 유일한 것은 여러 번 인쇄 된 하나의 파일 이름입니다.
내 원래 코드는 이보다 더 복잡하지만 도움을 위해 단순화했습니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?
감사
해결법
-
==============================
1.나는 그것을 알아. Hadoop은 이상한 메모리 사용법을 가지고 있으므로, 처음에 값을 반복 할 때 같은 객체를 arraylist에 반복해서 추가하는 것이 었습니다.
나는 그것을 알아. Hadoop은 이상한 메모리 사용법을 가지고 있으므로, 처음에 값을 반복 할 때 같은 객체를 arraylist에 반복해서 추가하는 것이 었습니다.
대신 나는 이것을 할 필요가있다.
for(FreqDataWritable i : values) { filenames.add(new String(i.getFilename())); }
-
==============================
2.
for(String filename : filenames) { System.out.println(fn); }
이것이 도움이 될지 알려주시겠습니까?
-
==============================
3.반복기 기반 방법을 사용해 보셨습니까?
반복기 기반 방법을 사용해 보셨습니까?
Iterator i = values.iterator(); fileNames.add(i.next().getFileName()); for(i; i.hasNext();) { String stringI = i.next().getLast().getFileName(); if(!stringI.equals(fileNames.get(fileNames.size() - 1))) fileNames.add(i.next().getLast().getFileName()); }
from https://stackoverflow.com/questions/23329173/iterable-to-arraylist-elements-change by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] ClassNotFoundException org.apache.mahout.math.VectorWritable (0) | 2019.08.02 |
---|---|
[HADOOP] Hadoop 2.5.1 나머지 API로 mapreduce 작업을 어떻게 수행 할 수 있습니까? (0) | 2019.08.02 |
[HADOOP] HDFS에 쓰기 : 파일을 덮어 씁니다. (0) | 2019.08.02 |
[HADOOP] pydoop 대 hadoopy - hadoop 파이썬 클라이언트 [닫기] (0) | 2019.08.02 |
[HADOOP] Hadoop 웹 사용자 : 해당 사용자 없음 (0) | 2019.08.02 |