2
저는 Map Reduce로 이전에했던 숙제로 돼지 라틴어를 이해하려고 애쓰는 라틴계 돼지에게 새롭습니다. 그리고 GC 오버 헤드 오류가 발생했습니다. 추신 : 내 입력은 단지 10 줄 간단한 CSV 파일입니다.PigLatin : java.lang.OutOfMemoryError : GC 오버로드 한도를 초과했습니다.
저는 CSV 형식을 arff로 변환하려고합니다.
내 UDF :
public class CSV2ARFF extends EvalFunc<String> {
private String arffDataString;
private String arffHeaderString;
public String exec(Tuple input) throws IOException {
if (input == null || input.size() == 0)
return null;
try{
System.out.println(">>> " + input.get(0).toString());
// csv to instances
ByteArrayInputStream inputStream = new ByteArrayInputStream(input.get(0).toString().getBytes("UTF-8"));
CSVLoader loader = new CSVLoader();
loader.setSource(inputStream);
Instances data = loader.getDataSet(); //**Line #30**
//convert into arff
ArffSaver arff = new ArffSaver();
arff.setInstances(data);
this.arffDataString = arff.getInstances().toString();
Instances arffdata = arff.getInstances();
// header
Instances header = new Instances(arffdata, 0);
this.arffHeaderString = header.toString();
this.arffDataString = this.arffDataString.substring(this.arffHeaderString.length());
return arffDataString;
}catch(Exception e){
System.err.println("CSV2ARFF: failed to proces input; error - " + e.getMessage());
return null;
}
}
}
내 script.pig
REGISTER ./csv2arff.jar;
REGISTER ./weka.jar;
csvraw = LOAD 'sample' USING PigStorage('\n') as (c);
arffraws = FOREACH csvraw GENERATE pighw2java.CSV2ARFF(c);
--output
STORE arffraws INTO 'output' using PigStorage();
오류
java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.nio.CharBuffer.wrap(CharBuffer.java:369)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:310)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.read(BufferedReader.java:175)
at java.io.StreamTokenizer.read(StreamTokenizer.java:500)
at java.io.StreamTokenizer.nextToken(StreamTokenizer.java:544)
at weka.core.converters.ConverterUtils.getToken(ConverterUtils.java:888)
at weka.core.converters.CSVLoader.readHeader(CSVLoader.java:937)
at weka.core.converters.CSVLoader.readStructure(CSVLoader.java:578)
at weka.core.converters.CSVLoader.getStructure(CSVLoader.java:563)
at weka.core.converters.CSVLoader.getDataSet(CSVLoader.java:596)
at pighw2java.CSV2ARFF.exec(CSV2ARFF.java:30)
at pighw2java.CSV2ARFF.exec(CSV2ARFF.java:1)
[돼지 JVM 자바 힙 공간 오류] 가능한 복제본 (http://stackoverflow.com/questions/10822213/pig-jvm-java-heap-space-error) –
@AndrewFinnell 나는 그 게시물을 게시하기 전에 이미 보았습니다. 질문 및 시도 돼지 -Dpig.mapred.child.java.opts = -Xms2048M script1.pig 1024 및 2048 모두 동일한 오류 –
2048로 설정하면 프로세스가 더 오래 실행됩니까? 또한 최상위 레벨 Java 프로세스의 메모리가 부족할 수도 있습니다. 돼지 자식뿐만 아니라 부모 프로세스의 Xmx 크기를 늘릴 수 있습니까? –