2009-09-29 18 views
8

Task Side-Effect Files हडोप ट्यूटोरियल के अनुभाग के लिए कार्य प्रयास आईडी प्राप्त करें, कार्य के "प्रयास" का उपयोग एक अद्वितीय नाम के रूप में किया गया है। मैं अपने मैपर या reducer में यह प्रयास आईडी कैसे प्राप्त करूं?वर्तमान में चल रहे हैंडोप कार्य

उत्तर

11

आप Hadoop में एक पक्ष प्रभाव फ़ाइल के लिए एक विशिष्ट आईडी की जरूरत है, तो आप इस कोड के साथ काम करने के प्रयास को विशिष्ट आईडी का लाभ उठाने कर सकते हैं:

public static String getAttemptId(Configuration conf) throws IllegalArgumentException 
    { 
     if (conf == null) { 
      throw new NullPointerException("conf is null"); 
     } 

     String taskId = conf.get("mapred.task.id"); 
     if (taskId == null) { 
      throw new IllegalArgumentException("Configutaion does not contain the property mapred.task.id"); 
     } 

     String[] parts = taskId.split("_"); 
     if (parts.length != 6 || 
       !parts[0].equals("attempt") || 
       (!"m".equals(parts[3]) && !"r".equals(parts[3]))) { 
      throw new IllegalArgumentException("TaskAttemptId string : " + taskId + " is not properly formed"); 
     } 

     return parts[4] + "-" + parts[5]; 
    } 
4
देर पार्टी के लिए

, लेकिन आप TaskAttemptID उपयोग कर सकते हैं mapred.task.id संपत्ति का विश्लेषण करने के लिए कक्षा।

मेरे मामले में, मैं सांख्यिक प्रयास मूल्य ही चाहता था और मेरी मैपर में निम्नलिखित प्रयोग किया है:

int _attemptID; 

@Override 
public void configure(JobConf conf) { 
    TaskAttemptID attempt = TaskAttemptID.forName(conf.get("mapred.task.id")); 
    _attemptID = attempt.id(); 
} 
9
नई Hadoop API की मदद से

:

context.getTaskAttemptID().getTaskID().getId() 
संबंधित मुद्दे