首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Elasticsearch-hadoop中使用SchemaRDD.saveToES()从HDFS索引JSON

无法在Elasticsearch-hadoop中使用SchemaRDD.saveToES()从HDFS索引JSON
EN

Stack Overflow用户
提问于 2015-02-20 06:00:53
回答 1查看 576关注 0票数 0

这是我第一次真正尝试spark/scala,所以要温文尔雅。

我在HDFS上有一个名为test.json的文件,我正在尝试使用Spark读取和索引该文件。我可以通过SQLContext.jsonFile()读取文件,但是当我尝试使用SchemaRDD.saveToEs()时,我得到了一个接收到无效JSON片段的错误。我认为saveToES()函数实际上并没有格式化json格式的输出,而只是发送RDD的value字段。

我做错了什么?

Spark 1.2.0

Elasticsearch-hadoop 2.1.0.BUILD-20150217

test.json:

代码语言:javascript
复制
{"key":"value"}

spark-shell:

代码语言:javascript
复制
import org.apache.spark.SparkContext._
import org.elasticsearch.spark._

val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext._

val input = sqlContext.jsonFile("hdfs://nameservice1/user/mshirley/test.json")
input.saveToEs("mshirley_spark_test/test")

错误:

代码语言:javascript
复制
<snip>
org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest: Found unrecoverable error [Bad Request(400) - Invalid JSON fragment received[["value"]][MapperParsingException[failed to parse]; nested: ElasticsearchParseException[Failed to derive xcontent from (offset=13, length=9): [123, 34, 105, 110, 100, 101, 120, 34, 58, 123, 125, 125, 10, 91, 34, 118, 97, 108, 117, 101, 34, 93, 10]]; ]]; Bailing out..
<snip>

输入:

代码语言:javascript
复制
res2: org.apache.spark.sql.SchemaRDD = 
SchemaRDD[6] at RDD at SchemaRDD.scala:108
== Query Plan ==
== Physical Plan ==
PhysicalRDD [key#0], MappedRDD[5] at map at JsonRDD.scala:47

input.printSchema():

代码语言:javascript
复制
root
 |-- key: string (nullable = true)
EN

回答 1

Stack Overflow用户

发布于 2015-07-31 07:36:53

https://github.com/elastic/elasticsearch-hadoop/issues/382

已更改:

代码语言:javascript
复制
import org.elasticsearch.spark._

至:

代码语言:javascript
复制
import org.elasticsearch.spark.sql._
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28617829

复制
相关文章

相似问题

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