我编写了一个InvertedIndex java程序,在给出一个单词的情况下,它会在字符串的某个静态数组中搜索单词,其中每个字符串都是需要搜索的url。它最终返回一个列表,其中包含找到该单词的所有网址。
这是我的相关代码:
static final String[] URL_SEARCH_LIST = {
"http://www.cnn.com", "http://www.daniel.com", "http://www.amazon.com"
};
private static List<String> search (String query) {
try {
List<String> urlList = new ArrayList<String>();
for (String site : URL_SEARCH_LIST) {
URL url = new URL(site);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String htmlContent;
while ((htmlContent = br.readLine()) != null) {
if (htmlContent.contains(query)) {
urlList.add(site);
break;
}
}
}
System.out.println("Search for: " + query + " Is Done!");
return urlList;
} catch (Exception e) {
System.out.println(e.getMessage());
return null;
}
}
现在我想在Amazon EMR上进行此操作,这意味着我需要将我的程序转换为Map-Reduce程序,它执行相同的操作。
鉴于此代码,有人可以帮助我开始吗?我没有完全理解map和reduce的概念......
提前致谢
答案 0 :(得分:1)
Map-reduce基本上只是划分和征服加上很多基础设施,所以分开(映射)你的URL_SEARCH_LIST
数组,创建每个本地urlList
,并组合(减少)所有{ {1}}为最终输出