2014-11-20 4 views
2

Я хочу создать UDF в свинью с использованием TIKA для обработки изображения в HDFS.Создание UDF в свинью для обработки изображений

Ниже мой код, но я получаю ClassNotFound Exception

 public String exec(Tuple input) throws ExecException, IOException { 
     try { 
      if (input == null || input.size() == 0 || input.get(0) == null) 
      { 
       return null; 
      } 
     } catch (ExecException ex) { 
      Logger.getLogger(Check.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     String s=""; 
     ByteArrayInputStream b = (ByteArrayInputStream)input.get(0); 
     ContentHandler contenthandler = new BodyContentHandler(); 
     Metadata metadata = new Metadata(); 
     Parser parser = new AutoDetectParser(); 
     ParseContext parseCtx = new ParseContext(); 
     try { 
      parser.parse(b, contenthandler, metadata,parseCtx); 
     } catch (SAXException ex) { 
      Logger.getLogger(Check.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (TikaException ex) { 
      Logger.getLogger(Check.class.getName()).log(Level.SEVERE, null, ex); 
     } 


     System.out.println("Mime: " + metadata.get(Metadata.CONTENT_TYPE)); 
     return metadata.get(Metadata.CONTENT_TYPE); 

    } 

Input файлов изображений, который хранится в HDFS в неизвестном формате.

Выход Мне нужен выход как тип файла. Но я получаю исключение TikaException и java Class для указанного выше кода.

Ошибка

2014-11-21 12:00:56,417 [main] INFO org.apache.pig.backend.hadoop.executionengi 
ne.mapReduceLayer.MapReduceLauncher - Failed! 
2014-11-21 12:00:56,483 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 10 
66: Unable to open iterator for alias f. Backend error : java.lang.ClassNotFound 
Exception: org.apache.tika.exception.TikaException 

PigScript

a= load '/image.jpeg' as x; 
b= group a all; 
f= foreach b generate package.check(a) 

Если кто-нибудь знает решение вышеуказанной проблемы. Пожалуйста, направляйте меня как можно скорее.

+1

Пожалуйста, укажите значение входного вы передаете и вывод, полученный с полным трассировки стека .. –

+0

я редактировал содержание, пожалуйста, найти выше. – Mallieswari

+0

Как насчет трассировки стека? –

ответ

0

Пожалуйста, проверьте, зарегистрирован ли банкомат Apache Tika в вашем сценарии свиней. Убедитесь, что он доступен во время выполнения скрипта Свиньи.

например:

REGISTER '/home/user/pig/udfrepository/projectUDF.jar' 
REGISTER '/home/user/thridpartyjars/xyz.jar'; 
+0

привет, я зарегистрировал банку перед выполнением скрипта свиньи, но получаю ошибку. – Mallieswari