【问题标题】:Store Geoshape to Elasticsearch using EShadoop from pig使用来自 pig 的 EShadoop 将 Geoshape 存储到 Elasticsearch
【发布时间】:2016-05-26 16:09:41
【问题描述】:

我正在尝试使用 org.elasticsearch.hadoop.pig.EsStorage (2.2.0) 通过 pig 将 geoshape(如下所示)存储到 ES:

{
    "location" : {
        "type" : "circle",
        "coordinates" : [-45.0, 45.0],
        "radius" : "100m"
    }
}

或:

{
    "location" : {
        "type" : "polygon",
        "orientation" : "clockwise",
        "coordinates" : [
            [ [-177.0, 10.0], [176.0, 15.0], [172.0, 0.0], [176.0, -15.0], [-177.0, -10.0], [-177.0, 10.0] ],
            [ [178.2, 8.2], [-178.8, 8.2], [-180.8, -8.8], [178.2, 8.8] ]
        ]
    }
}

我们尝试了以下方法:

REGISTER ./elasticsearch-hadoop-2.2.0.jar;

loadedRecords = LOAD 'inputFile.csv' USING PigStorage('|') AS (type:chararray,coordinates:bag{(float,float)},radius:chararray);

elasticData = foreach loadedRecords GENERATE (type ,{(45.0f,46.0f)},radius) AS geoArea:tuple(type:chararray,coordinates:bag{(float,float)},radius:chararray);

DESCRIBE elasticData ;

DUMP elasticData;

STORE elasticData INTO 'myindex/mytype' USING org.elasticsearch.hadoop.pig.EsStorage('es.http.retries=10','es.nodes=localhost','es.index.auto.create=true','es.mapping.pig.tuple.use.field.names=false');

并在解析坐标时收到错误,遇到非数值并失败。 (类型被解析为 CIRCLE)

我们还尝试了以下方法:

我尝试了另一件事,但这也有问题:

REGISTER ./elasticsearch-hadoop-2.2.0.jar;

loadedRecords = LOAD 'inputFile.csv' USING PigStorage('|') AS (type:chararray,coordinates:chararray,radius:chararray);

--elasticData = foreach loadedRecords GENERATE (type ,{(45.0f,46.0f)} ,radius) AS geo:tuple(type:chararray,coordinates:bag{(float,float)},radius:chararray;
elasticData = foreach loadedRecords GENERATE TOMAP('type','circle','coordinates','[40.0f,46.0f]','radius','150m') AS geo:map[chararray];
DESCRIBE elasticData ;

DUMP elasticData;

STORE elasticData INTO 'myindex/mytype' USING org.elasticsearch.hadoop.pig.EsStorage('es.http.retries=10','es.nodes=host','es.index.auto.create=true','es.mapping.pig.tuple.use.field.names=false');

收到:

Caused by: com.fasterxml.jackson.core.JsonParseException: Current token (END_OBJECT) not numeric, can not use numeric value accessors
 at [Source: org.elasticsearch.common.io.stream.InputStreamStreamInput@20063f76; line: 1, column: 83]
    at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1581)
    at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:533)
    at com.fasterxml.jackson.core.base.ParserBase._parseNumericValue(ParserBase.java:799)
    at com.fasterxml.jackson.core.base.ParserBase.getDoubleValue(ParserBase.java:713)
    at org.elasticsearch.common.xcontent.json.JsonXContentParser.doDoubleValue(JsonXContentParser.java:180)
    at org.elasticsearch.common.xcontent.support.AbstractXContentParser.doubleValue(AbstractXContentParser.java:184)
    at org.elasticsearch.common.xcontent.support.AbstractXContentParser.doubleValue(AbstractXContentParser.java:174)
    at org.elasticsearch.common.geo.builders.ShapeBuilder.parseCoordinates(ShapeBuilder.java:248)
    at org.elasticsearch.common.geo.builders.ShapeBuilder.access$100(ShapeBuilder.java:46)
    at org.elasticsearch.common.geo.builders.ShapeBuilder$GeoShapeType.parse(ShapeBuilder.java:744)
    at org.elasticsearch.common.geo.builders.ShapeBuilder.parse(ShapeBuilder.java:291)

有人使用 pig 将 geoshape 存储到 ES 并且可以帮助我们吗?

谢谢!

【问题讨论】:

  • 所以从 inputFile.csv 加载记录时出错?你可以发布一个示例 inputFIle.csv 的内容
  • 看起来像加载自己如果失败这可能是因为你有两个类型 geoshape 一个有方向和一个没有方向
  • 嗨,我在原始帖子中添加了一些信息。关于您的问题: csv 看起来像:圆,坐标,100m。它只有一行。在我附加的代码中,我忽略了坐标输入并尝试插入硬编码坐标。我认为负载没问题。在我的第二次尝试中(使用 TOMAP)我忽略了负载并尝试存储硬编码形状...你能解释一下方向吗?谢谢!
  • 只是尝试加载记录(loadedRecords)并转储它我觉得这是因为你在 csv 中没有统一的数据(相同的列数)
  • 加载命令不会运行任何 map reduce 作业,它只是加载数据的占位符。你必须在它旁边有一个转储命令,只需加载 csv 并转储关系

标签: hadoop elasticsearch apache-pig jsonexception elasticsearch-geo-shape


【解决方案1】:

你能显示这个索引的映射吗? 前段时间我在 Pig 中遇到了类似的坐标问题 - 我所做的是:

  1. 在 ES 模式中我定义了位置

    "location": {   
          "type": "geo_point"   
    }
    
  2. 生成的位置为 TOTUPLE(longitude,latitude)

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多