2017-04-12 79 views
1

我正在制作spark java脚本。 我需要使用Lucidworks(从一个数据帧)的数据插入到Solr的集合 - 火花Solr的工具(https://github.com/lucidworks/spark-solrLucidworks保存solr格式未知字段

我的schema.xml:

<schema name="MY_NAME" version="1.6"> 
    <field name="_version_" type="long" indexed="true" stored="true" /> 
    <field name="_root_" type="string" indexed="true" stored="false" /> 
    <field name="ignored_id" type="ignored" /> 
    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
    <field name="age" type="int" indexed="true" stored="true" required="false" multiValued="false" /> 
    <field name="height" type="tlong" indexed="true" stored="true" required="false" multiValued="false" /> 
    <field name="name " type="string" indexed="true" stored="true" required="false" multiValued="false" /> 

    <fieldType name="string" class="solr.StrField" sortMissingLast="true" /> 
    <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0" /> 
    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0" /> 
    <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0" /> 
    <fieldType name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" /> 

    <uniqueKey>id</uniqueKey> 
</schema> 

我的数据框:

DataFrame df = sqlContext.sql("SELECT id, age, height, name FROM TABLE"); 

df.show()给出:

+--------------------+-----------+------+------+ 
|     id|  age|height|name | 
+--------------------+-----------+------+------+ 
|12345678912345678...|   10| 101|hello| 

但是当我尝试插入我的Solr收集与:

df.write() 
.format("solr") 
.option("collection", MY_COLLECTION) 
.option("zkhost", MY_ZKHOST) 
.save() 

我有以下错误:

Caused by: org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error from server at http://MY_IP/solr/MY_COLLECTION_SHARD_REPLICA: ERROR :[doc=123456789123456789] unknown field '_indexed_at_tdt' 

我不明白的地方现场“_indexed_at_tdt”的由来。

DataFrame似乎是正确的,只有我想要插入的4个字段,但由于这个未知字段“_indexed_at_tdt”,我仍然无法在我的Solr集合中插入。

更多信息: 我有一个HBase索引器,它插入相同的集合并正在工作。

在此先感谢您的帮助!

回答

0

正如你所看到的here似乎这个字段是由Lucidworks代码自动添加的。

你应该通讯员场只需添加到架构,也将努力:

<field name="_indexed_at_tdt" type="tdate" indexed="true" stored="true" required="false" multiValued="false" /> 

或者,如果你愿意让动态的* _tdt。

+0

谢谢!我添加了该字段,现在正在工作 – Drakax