2014-08-27 2 views
0

У меня есть требование следующим образом:ElasticSearch с выдачей Hadoop дублирования данных

Что бы данные есть в Hadoop, мне нужно, чтобы сделать его доступным для поиска (и наоборот).

Для этого я использую ElasticSearch, где мы можем использовать elasticsearch-hadoop plug-in для отправки данных от hadoop до Elastic.And теперь возможен поиск в режиме реального времени.

Но, мой вопрос, нет дублирования данных. Независимо от данных в hadoop, то же самое дублируется в поиске Elastic с индексацией . Есть ли способ избавиться от этого дублирования, или моя концепция неверна. Я много искал, но не знаю ни малейшего представления об этой проблеме дублирования.

ответ

-1

Если вы укажете неизменяемый идентификатор для каждой строки в elasticsearch (например, например, идентификатор клиента), все вставки существующих данных будут только обновлениями.

Выписка из официальной документации о способе вставки (ср http://www.elasticsearch.org/guide/en/elasticsearch/hadoop/current/configuration.html#_operation):

индекса (по умолчанию): новые данные добавляются в то время как существующие данные (на основе его идентификатора) заменяется (переиндексировано).

Если у вас есть «клиент» набор данных в свинью, просто хранить ДАННЫЕ так:

A = LOAD '/user/hadoop/customers.csv' USING PigStorage() 
        ....; 

B = FOREACH A GENERATE customerid, ...; 


STORE B INTO 'foo/customer' USING org.elasticsearch.hadoop.pig.EsStorage('es.nodes = localhost','es.http.timeout = 5m','es.index.auto.create = true','es.input.json = true','es.mapping.id =customerid','es.batch.write.retry.wait = 30', 'es.batch.size.entries = 500'); 
--,'es.mapping.parent = customer'); 

Чтобы выполнить новый поиск по Hadoop просто использовать пользовательский загрузчик:

A = LOAD 'foo/customer' USING org.elasticsearch.hadoop.pig.EsStorage('es.query=?me*'); 
+0

Спасибо за ваш ответ rnio. В случае повторного запуска одного и того же запроса вы правы. Но просто посмотрите движение данных в первом огне. При запуске в первый раз все данные передаются вправо Elastic. Мой вопрос нацелен на то, чтобы дублировать данные. –

+0

Я не уверен, что понял. Если у вас есть дубликаты в вашем наборе данных, вы можете удалить их с помощью агрегации свиней или с помощью вложенного foreach. –

Смежные вопросы