Как мне изменить этот код Mapreduce, чтобы также изменить пространство имен сущности? - PullRequest
0 голосов
/ 11 сентября 2011

Я использую этот картограф, созданный Ikai Lan:

package com.ikai.mapperdemo.mappers;

import java.util.Date;
import java.util.logging.Logger;

import org.apache.hadoop.io.NullWritable;

import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.tools.mapreduce.AppEngineMapper;
import com.google.appengine.tools.mapreduce.DatastoreMutationPool;

/**
 *
 * The functionality of this is exactly the same as in {@link NaiveToLowercaseMapper}.
 * The advantage here is that since a {@link DatastoreMutationPool} is used, mutations
 * can be done in batch, saving API calls.
 *
 * @author Ikai Lan
 *
 */
public class PooledToLowercaseMapper extends
        AppEngineMapper<Key, Entity, NullWritable, NullWritable> {
    private static final Logger log = Logger
            .getLogger(PooledToLowercaseMapper.class.getName());

    @Override
    public void map(Key key, Entity value, Context context) {
        log.info("Mapping key: " + key);

        if (value.hasProperty("comment")) {
            String comment = (String) value.getProperty("comment");
            comment = comment.toLowerCase();
            value.setProperty("comment", comment);
            value.setProperty("updatedAt", new Date());

            DatastoreMutationPool mutationPool = this.getAppEngineContext(
                    context).getMutationPool();
            mutationPool.put(value);
        }
    }
}

В дополнение к вышесказанному я хочу также изменить пространство имен хранилища данных изменяемой сущности.

Как это возможно?

1 Ответ

2 голосов
/ 11 сентября 2011

Пространство имен является компонентом неизменяемого ключа сущности.Там нет понятия изменить его.Если вы пытаетесь «переместить» сущность в другое пространство имен, вам нужно создать новую сущность в этом пространстве имен, отследить любые ссылки на старую сущность и обновить их, а затем удалить старую сущность.

...