[
https://issues.apache.org/jira/browse/GORA-419?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14502857#comment-14502857
]
ASF GitHub Bot commented on GORA-419:
-------------------------------------
Github user gerhardgossen commented on the pull request:
https://github.com/apache/gora/pull/23#issuecomment-94456008
@renato2099: Unfortunately I don't know enough about Accumulo to know if
there may be a better way. But I think this issue needs to be fixed because it
causes data loss in unrelated fields.
Depending on the use case it might also make sense to disable this
clear-before-update behavior, maybe even on a field-by-field basis. For example
in Nutch 2, inlinks to a web page are store as a map (key: URL, value: anchor
text). In this scenario it would be nice to be able to just add one more KV
pair to the map without having to fetch, update and store the entire map.
> AccumuloStore.put deletes entire row when updating map/array field
> ------------------------------------------------------------------
>
> Key: GORA-419
> URL: https://issues.apache.org/jira/browse/GORA-419
> Project: Apache Gora
> Issue Type: Bug
> Components: gora-accumulo
> Affects Versions: 0.5, 0.6
> Environment: Gora 0.5
> Accumulo 1.5.1
> Zookeeper 3.4.6
> Hadoop 1.2.1
> Reporter: Gerhard Gossen
> Priority: Critical
>
> In {{AccumuloStore.put(k, v)}} fields of type MAP or ARRAY are cleared first
> before they are set to the new value. This is done in the methods
> {{putMap}}/{{putArray}} using a call to {{deleteByQuery(q)}}. The name for
> fields to be deleted is taken from the current column. However,
> {{deleteByQuery}} tries to translate the field names of the query to column
> names again, which fails with a log message like
> {code}
> 2015-04-13 13:43:35.084 ERROR 16733 --- [ool-46-thread-1]
> o.a.gora.accumulo.store.AccumuloStore : Mapping not found for field: ol
> 2015-04-13 13:43:35.104 ERROR 16733 --- [ool-46-thread-1]
> o.a.gora.accumulo.store.AccumuloStore : Mapping not found for field: mk
> 2015-04-13 13:43:35.115 ERROR 16733 --- [ool-46-thread-1]
> o.a.gora.accumulo.store.AccumuloStore : Mapping not found for field: mtdt
> {code}
> As a result, the query is not restricted to any field and the *entire row is
> deleted*.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)