2012-06-12 3 views
7

Sono nuovo di Hadoop/PIG. Ho una domanda di base.Debug in PIG UDF

Abbiamo una funzione di registrazione in PIG UDF? Ho scritto un UDF che ho bisogno di verificare Ho bisogno di registrare alcune dichiarazioni per controllare il flusso. È disponibile una funzione di registrazione? Se sì, dove sono presenti i registri Pig?

risposta

6

Supponendo che l'UDF si estenda EvalFunc, è possibile utilizzare il Logger restituito da EvalFunc.getLogger(). L'output del log dovrebbe essere visibile nell'attività associata Map/Reduce eseguita da pig (se il lavoro viene eseguito in più di una fase, sarà necessario selezionarli per trovare le voci di registro associate).

+0

Quindi i registri finiranno nel file di registro Riduci attività mappa? Potrei fare in modo specifico le mie istruzioni Log in un file separato? – Uno

+0

Sì, lo faranno. Potresti, ma poi dovresti andare a ogni tracker di attività per vederli/raccoglierli. Immagino che potresti provare a configurare un logger remoto (ad esempio, collegandoti ad un DB). –

+0

Non lo so per certo, ma potresti provare il PigLogger, che potrebbe restituire le cose al client. –

2

forse ovvio, ma consiglio di eseguire il debug dell'UDF in modalità locale prima della distribuzione su un cluster/pseudocluster. In questo modo, puoi eseguire il debug all'interno del tuo IDE (eclipse nel mio caso) che è più facile di log-debugging.

+0

Esiste un sito o alcuni passaggi che posso seguire per iniziare su Eclipse. Intendo maiale su eclissi. – Uno

+1

non conosco un sito con passaggi, ma è abbastanza semplice: metti le dipendenze di hadoop-core e pig nel tuo maven pom, e poi lavora con 'org.apache.pig.PigServer'. prova 'pigServer.registerScript (resource.getInputStream(), pigScriptParams, null); 'e quindi' PigStats stats = pigServer.store ("final_output", pigScriptParams.get ("output_folder"), pigStoreFunc) .getStatistics(); ' – ihadanny