• hive udaf 用maven打包运行create temporary function 时报错



    用maven打包写好的jar,在放到hive中作暂时函数时报错。


    错误信息例如以下:

    hive> create temporary function maxvalue as "com.leaf.data.Maximum";
    java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
            at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:240)
            at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:193)
            at java.util.jar.JarVerifier.processEntry(JarVerifier.java:305)
            at java.util.jar.JarVerifier.update(JarVerifier.java:216)
            at java.util.jar.JarFile.initializeVerifier(JarFile.java:341)
            at java.util.jar.JarFile.getInputStream(JarFile.java:406)
            at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:752)
            at sun.misc.Resource.cachedInputStream(Resource.java:77)
            at sun.misc.Resource.getByteBuffer(Resource.java:160)
            at java.net.URLClassLoader.defineClass(URLClassLoader.java:436)
            at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
            at java.lang.Class.forName0(Native Method)
            at java.lang.Class.forName(Class.java:264)
            at org.apache.hadoop.hive.ql.exec.FunctionTask.getUdfClass(FunctionTask.java:137)
            at org.apache.hadoop.hive.ql.exec.FunctionTask.createFunction(FunctionTask.java:87)
            at org.apache.hadoop.hive.ql.exec.FunctionTask.execute(FunctionTask.java:65)
            at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:151)
            at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:65)
            at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1414)
            at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1192)
            at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1020)
            at org.apache.hadoop.hive.ql.Driver.run(Driver.java:888)
            at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:259)
            at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:216)
            at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:413)
            at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:781)
            at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
            at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:614)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:601)
            at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
    FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.FunctionTask

    此异常像是Manifest文件相关的错。

    解决方法:

    在jar包找到META-INF文件夹。删除掉以.SF结尾的文件就可以。例如以下图:










  • 相关阅读:
    60款很酷的 jQuery 幻灯片演示和下载
    分享27款非常棒的 jQuery 表单插件
    10款新鲜出炉的 jQuery 插件
    5 个很炫的 HTML5 游戏
    12款高质量的免费 HTML 网页模板下载
    jquery插件整理篇(四)自动补全类插件
    jquery插件整理篇(三)图片展示插件
    超强1000个jquery插件!
    34个漂亮的应用程序后台管理系统界面(系列二)
    jquery插件整理篇(九)数据验证类
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5193712.html
Copyright © 2020-2023  润新知