首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Hadoop上不识别使用Apache-Pig的JAR

在Hadoop上不识别使用Apache-Pig的JAR
EN

Stack Overflow用户
提问于 2016-08-02 11:39:51
回答 1查看 151关注 0票数 0

我的目标是在我的鸽子猪脚本中使用空间功能。为了使用鸽子函数,我在开始时注册了三个JAR(鸽子-0.2.1.jar,esri-几何学-api-1.2.1.jar和jts-1.8.jar),运行时没有错误和警告。当我在猪命令行(grunt)中运行猪命令时,一切都很好(除了一些指示性警告,但引用其他帖子时,这是可以忽略的),但只要我想运行像ST_MakePoint这样的鸽子命令,就会出现一个错误:

代码语言:javascript
运行
复制
ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1070: Could not resolve ST_MakePoint using imports: [, java.lang., org.apache.pig.builtin., org.apache.pig.impl.builtin.]

我使用的是: Ubuntu 14.04.4 LTS,Hadoop 2.7.1 (singlenode),pig 0.15.0

对如何解决这个问题有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-03 12:25:35

第一条路:

在猪中调用语法:packagename.ClassName(arg0...)

Github公司的源代码:

代码语言:javascript
运行
复制
    package edu.umn.cs.pigeon;

    import java.io.IOException;

    import org.apache.pig.EvalFunc;
    import org.apache.pig.data.DataByteArray;
    import org.apache.pig.data.Tuple;

    import com.esri.core.geometry.Point;
    import com.esri.core.geometry.SpatialReference;
    import com.esri.core.geometry.ogc.OGCPoint;

    /**
     * @author Ahmed Eldawy
     *
     */

    public class MakePoint extends EvalFunc<DataByteArray> {

      @Override
      public DataByteArray exec(Tuple input) throws IOException {
        if (input.size() != 2)
          throw new IOException("MakePoint takes two numerical arguments");
        double x = ESRIGeometryParser.parseDouble(input.get(0));
        double y = ESRIGeometryParser.parseDouble(input.get(1));
        Point point = new Point(x, y);
        OGCPoint ogc_point = new OGCPoint(point, SpatialReference.create(4326));
        return new DataByteArray(ogc_point.asBinary().array());
      }
    }

所以语法应该是

代码语言:javascript
运行
复制
FOREACH points GENERATE edu.umn.cs.pigeon.MakePoint(X,Y)  

2 Way: 使用简短的函数名

为了避免编写完整的函数名(包+类名),可以使用“pigeon_import.pig”文件为所有函数创建一个简短的名称。您可以下载文件这里并将其放在鸽子脚本旁边。若要将此文件加载到脚本中,请将以下行发送到脚本的开头。导入‘鸽子_IMPO.Pig’;之后,您可以将信封函数写成ST_MakePoint而不是edu.umn.cs.pigeon.MakePoint

参考博客

希望这会有帮助!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38719435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档