在pig中创建用于图像处理的自定义项

du7egjpx  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(430)

我想用tika在pig中创建udf来处理hdfs中的图像。
下面是我的代码,但是我得到了ClassNotFoundException

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);

    }

输入是以未知格式存储在hdfs中的图像文件。
输出我需要作为文件类型的输出。但是我得到了上面代码的tikaexception和java class not found异常。
错误

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

Pig笼草

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

如果有人知道上述问题的解决办法。请尽快指引我。

9jyewag0

9jyewag01#

请检查您的pig脚本中是否注册了apachetika jar。确保它在pig脚本执行期间可用。
前任:

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

相关问题