2016-06-24 16 views
0

Ich bekomme einen OutOfMemoryError beim Ausführen einer FOREACH-Operation in Apache Pig.Apache Pig: OutOfMemoryError mit FOREACH-Aggregation

16/06/24 15:14:17 INFO util.SpillableMemoryManager: first memory  
handler call- Usage threshold init = 164102144(160256K) used = 
556137816(543103K) committed = 698875904(682496K) max = 
698875904(682496K) 

java.lang.OutOfMemoryError: Java heap space 
-XX:OnOutOfMemoryError="kill -9 %p" 
Executing /bin/sh -c "kill -9 4095"... Killed 

Mein Schwein Skript:

A = LOAD 'PageCountTest/' USING PigStorage(' ') AS (Project:chararray, 
Title:chararray, count:int , size:int); 

B = GROUP A BY (Project,Title); 

C = FOREACH B 
generate group, SUM(A.count) AS COUNT; D = ORDER C BY COUNT DESC; 

STORE C INTO '/user/hadoop/wikistats'; 

Beispieldaten:

aa.b Main_Page 1 14335 
aa.d India 1 4075 
aa.d Main_Page 1 13190 
aa.d Special:RecentChanges 1 200 
aa.d Talk:Main_Page/ 1 14147 
aa.d w/w/index.php 9 137502 
aa Main_Page 6 9872 
aa Special:Statistics 1 324 

Kann jemand bitte helfen?

Antwort

0

Ich vermute, dass ein Speicherproblem auftreten, wenn Sie bestellen, da es am schwersten ist. Der einfachste Weg ist, mit den Parametern für die Größe des Heapspeichers zu spielen, während Sie Ihren Schweinejob starten.

pig -Dmapred.child.java.opts=-Xms2096M yourjob.pig 

Sie können auch die Heap-Größe direkt im Skript deklarieren.

export PIG_HEAPSIZE=2096