gpt4 book ai didi

java - 如何修改此 Mapreduce 代码以更改实体的命名空间?

转载 作者:行者123 更新时间:2023-12-02 08:11:23 25 4
gpt4 key购买 nike

我正在使用 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);
}
}
}

除了上述之外,我还想做的是更改正在修改的实体的数据存储命名空间。

这怎么可能?

最佳答案

命名空间是实体不可变键的组成部分。没有改变它的想法。如果您尝试将实体“移动”到不同的命名空间中,则需要在该命名空间中创建一个新实体,跟踪对旧实体的所有引用并更新它们,然后删除旧实体。

关于java - 如何修改此 Mapreduce 代码以更改实体的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7379253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com