gpt4 book ai didi

java - MapReduce适合调用Web服务和转换XML数据吗?

转载 作者:行者123 更新时间:2023-12-01 14:20:00 25 4
gpt4 key购买 nike

我们有一个作业在单个节点上运行,需要最多 40m 才能完成,通过 M/R,我们希望将其减少到 2m 以下,但我们不确定该过程的哪些部分会进入 map()reduce()

当前流程:
对于键列表,为每个键调用 Web 服务并获取 xml 响应;将 xml 转换为管道分隔格式;最后输出一个文件...

def keys = 100..9999
def output = new StringBuffer()
keys.each(){ key ->
def xmlResponse = callRemoteService( key)
def transformed = convertToPipeDelimited( xmlResponse)
output.append( transformed)
}
file.write( output)

映射/归约模型
这是我使用 map/reduce 对其进行建模的方法,只是想确保我走在正确的道路上......

映射器
key 从keys.txt中获取;我为每个 key 调用远程服务并存储 key /xml 对...

public static class XMLMapper extends Mapper<Text, Text, Text, Text> {
private Text xml = new Text();
public void map(Text key, Text value, Context context){
String xmlResponse = callRemoteService( key)
xml.set( xmlResponse)
context.write(key, xml);
}
}

reducer
对于每个键/xml 对,我将 xml 转换为管道分隔格式,然后写出结果...

public static class XMLToPipeDelimitedReducer extends Reducer<Text,Text,Text,Text> {
private Text result = new Text();
public void reduce(Text key, Iterable<Text> values, Context context ) {
String xml = values.iterator().next();
String transformed = convertToPipeDelimited( xml);
result.set( transformed);
context.write( key, result);
}
}

问题

  • 在执行以下操作时调用 map() 中的 Web 服务是一个好习惯吗?转换 reduce() ;进行这两项操作的任何好处 ojit_代码?
  • 我不检查map()中的重复项,因为keys.txt不包含重复的键;这样安全吗?
  • 如何控制输出文件的格式? reduce() 看起来很有趣;我希望它读起来像这样......
100|foo bar|$456,098
101|bar foo|$20,980

最佳答案

出于以下几个原因,您应该在 map 端进行变换:

  • 从 xml 转换为管道分隔将减少序列化和传输到 reducer 中的数据量。
  • 您将运行多个映射作业,但运行一个简化作业,因此您希望转换映射端以利用这种并行性。
  • 由于所有工作都是在 map 端进行,因此您可以只使用提供的 IdentityReducer,而不必为此编写自己的代码。

如果您想要单个输出文件,则需要使用单个 reducer ; map-reduce 为每个 reducer 生成一个输出文件。

如果您确定没有重复的键,那么是的,忽略重复的reduce端应该是安全的。

我相信 TextOutputFormat 默认情况下会将您的(键,值)对作为制表符分隔的字符串写入文件,因此不完全是您想要的格式。请参阅here了解如何改变这一点。

您的网络服务将成为这里的限制因素之一。假设您希望 40 分钟的作业在 2 分钟内运行,您可能需要从中读取 40 个左右的 map 作业。它可以处理 40 个并发读者吗?

您的另一个限制因素将是减少方面。假设您想要一个按键排序的单个输出文件,您将必须使用单个化简器,并且它必须对所有输入进行排序,这可能需要一点时间。

一旦你的代码工作了,你就必须运行一些实验,看看什么设置可以给你一个合理的运行时间。祝你好运。

关于java - MapReduce适合调用Web服务和转换XML数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17691174/

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