Scala:使用Spark在Elasticsearch中读取数组值

时间:2018-04-13 15:39:18

标签: scala apache-spark elasticsearch

我正在尝试从Elasticsearch读取数据,但我想要阅读的文档包含一个嵌套数组(我想阅读)。

我添加了选项" es.read.field.as.array.include"通过以下方式:

val dataframe = reader
            .option("es.read.field.as.array.include","arrayField")
            .option("es.query", "someQuery")
            .load("Index/Document")

但得到了错误

java.lang.ClassCastException: scala.collection.convert.Wrappers$JListWrapper cannot be cast to java.lang.Float

我应该如何映射我的数组来阅读它?

来自ES的数据样本:

{
    "_index": "Index",
    "_type": "Document",
    "_id": "ID",
    "_score": 1,
    "_source": {
        "currentTime": 1516211640000,
        "someField": someValue,
        "arrayField": [
        {
            "id": "000",
            "field1": 14,
            "field2": 20.23871387052084,
            "innerArray": [[ 55.2754,25.1909],[ 55.2754,25.190929],[ 55.27,25.190]]
        }, ...
        ],
    "meanError": 0.3082,

    }
}

1 个答案:

答案 0 :(得分:2)

您的样本数据内部数组必须为2个数组列

您可以尝试此示例

for