HIVE 执行 UDF 函数获取 ip 字符串失败?

问答 忘尘 ⋅ 于 2020-06-21 12:08:13 ⋅ 最后回复由 苏牛 2020-06-21 12:36:27 ⋅ 2791 阅读
public Object evaluate(DeferredObject[] arguments) throws HiveException {
        System.out.println("evluate1");
        // 获取参数
        LazyString p1 = (LazyString) arguments[0].get();
        System.out.println("evluate2");

执行:

select ip from nginx_log_avro1 limit 3;
OK
ip
23.89.251.234
42.236.10.108
42.236.10.121
Time taken: 1.042 seconds, Fetched: 3 row(s)
hive (db1)> 
          > select iptrans(ip) from nginx_log_avro1;
OK
c0
evluate1
-- evluate2未输出 
Failed with exception java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException: Error evaluating 该函数可以帮助你返回ip物理地址名称,每次传入一个ip地址
Time taken: 0.646 seconds
点赞
成为第一个点赞的人吧 :bowtie:
回复数量: 2
  • 忘尘
    2020-06-21 12:26:28

    我换了讲义里写的继承UDF的原始版的就可以用了,但还是搞不懂继承GenericUDF的为啥不行

    select f1(ip) from nginx_log_avro1;
    -chgrp: 'DESKTOP-9K6C5LV\??' does not match expected pattern for group
    Usage: hadoop fs [generic options] -chgrp [-R] GROUP PATH...
    OK
    c0
    美国
    河南省郑州市
    河南省郑州市
    河南省郑州市
    河南省郑州市
  • 苏牛
    2020-06-21 12:36:27

    根据保存提示 应该是ipdat文件加载失败了 建议在线下做完测试之后再集群运行

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter