2012-11-23 21 views
6

में मारे गए नौकरी पर मुझे और अधिक विशिष्ट त्रुटि जानकारी कैसे प्राप्त हो सकती है मेरे पास ओज़ी वर्कफ़्लो में एक चरण के रूप में चलने वाली नौकरी कम हो गई है। यह जावा क्रिया का उपयोग शुरू कर दिया गया है जो org.apache.hadoop.util.Tool लागू करता है।ओज़ी

जब किसी कारण से नौकरी की जा रही है, तो मैं एक अधिसूचना ईमेल करने में सक्षम होना चाहता हूं जिसमें प्रसंस्करण के दौरान अपवाद होने पर स्टैकट्रैक होना चाहिए।

वर्तमान में मैं इसे इस तरह कार्य करें:

<action name="sendErrorNotifications"> 
    <email xmlns="uri:oozie:email-action:0.1"> 
     <to>[email protected]</to> 
     <subject>Job execution failed ${wf:id()}</subject> 
     <body>Job execution failed, error message: [${wf:errorMessage(wf:lastErrorNode())}]</body> 
    </email> 
    <ok to="fail" /> 
    <error to="fail" /> 
</action> 

लेकिन सभी मैं प्राप्त बस है:

Job execution failed, error message: [Job failed!] 

कौन सा बहुत उपयोगी :) नहीं है और मैं जाने के लिए और सभी नोड्स 'जांच करने की आवश्यकता खुद से लॉग

मैं और अधिक विशिष्ट संदेश कैसे प्राप्त कर सकता हूं? मैं अपने अपवाद को पकड़ने और उपकरण में कुछ oozie-catchable एक में लपेट, या बस के बजाय $ {WF कुछ का उपयोग करना चाहिए: ERRORMESSAGE ...

धन्यवाद

उत्तर

2

मैं त्रुटियों को संभालने और काउंटर का उपयोग करके कारण तक पहुँचने के लिए एक रास्ता मिल गया। हो सकता है कि यह क्या नहीं वे के लिए तैयार कर रहे हैं, लेकिन यह एक ही रास्ता बाहर हो रहा है ...

तो मैं इस तरह नक्शाकार और कम करने में हर फेंकने योग्य पकड़ने:

} catch (Throwable t) { 
    Counters.Counter counter = reporter.getCounter("Exceptions", t.getClass().getSimpleName()); 
     counter.increment(1); 
    counter.setDisplayName(t.getClass().getSimpleName() + "\n last failed key: " + key.toString() + "\n " + ExceptionUtils.getStackTrace(t)); 
    reporter.incrCounter("Exceptions", "TOTAL_COUNT", 1); 
    reporter.progress(); 
} 

और इन काउंटरों आसानी से कर रहे हैं नौकरी समाप्त होने के बाद RunningJob के माध्यम से टूल में सुलभ। "अपवाद" समूह में सभी अपवादों के काउंटर शामिल हैं जो प्रदर्शन क्षेत्र में सभी आवश्यक जानकारी के साथ हैं।

अगर आप इस दृष्टिकोण में कोई समस्या देखते हैं या आप बेहतर जानते हैं तो कृपया टिप्पणी करें।

2

एक सुझाव यह अपने मुख्य में अपवाद को पकड़ने के लिए है विधि, और उदाहरण के लिए एक संपत्ति ('अपवाद ट्रेस' निर्यात करें) अपवाद के साथ इसके मूल्य (कैप्चर-आउटपुट ध्वज के साथ संयुक्त) के साथ, जिसे आप wf:actionData('myJavaAction')['exceptionTrace'] ईएल फ़ंक्शन का उपयोग करके संदर्भित कर सकते हैं।

http://oozie.apache.org/docs/3.2.0-incubating/WorkflowFunctionalSpec.html#a3.2.7_Java_Action

+0

समस्या यह है कि टूल में एक अपवाद को पकड़ने के लिए संभव नहीं है, कहें, reducer। हमारे पास नौकरी की स्थिति है इसलिए हम अब कुछ गलत कर सकते हैं ... मैं समाधान प्रदान करूंगा जिसका उपयोग मैं एक संभावित उत्तर के रूप में करता हूं। – Art