在training_set
文件夹中,文件存在,如此
mv_000000
mv_000001
mv_000002
...
索引是可以在movie_title.txt
movie_title.tx
文件就像:
1,2003,Dinosaur Planet
2,2004,Isle of Man TT 2004 Review
3,1997,Character
4,1994,Paula Abdul's Get Up & Dance
5,2004,The Rise and Fall of ECW
...
第一列是特定电影名称的索引。
我根据netplix奖品竞赛数据集练习hadoop。
我假设我插入了特定的电影标题,如“生病”。
然后转到movie_titles.txt
文件并搜索“生病”的moive标题ID。
最后设置输入路径电影标题ID。
例如,如果我将hadoop程序启动为:
hadoop jar ~ [input path] [output path] [moiveA name]
必须设置输入路径training_set/mv_movieAIndex
。
正如我所说,电影ID的信息存在于movie_title.txt
。
请给我一点提示来解决这个问题。
答案 0 :(得分:0)
您的要求似乎与Hadoop
完全无关。您只需要针对id
命令的第3个参数指定的movieName查找hadoop jar
。以下代码段将完成工作:
private static Map<String, Integer> getMovieMappings(String filePath)
throws IOException {
Map<String, Integer> movieMap = new HashMap<String, Integer>();
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(filePath));
String line;
while ((line = br.readLine()) != null) {
String[] temp = line.split(",");
movieMap.put(temp[2].trim(), Integer.parseInt(temp[0].trim()));
}
} finally {
if (br != null) br.close();
}
return movieMap;
}
现在在驱动程序中,只需获取地图并相应地设置inputPath:
Map<String, Integer> movieMap = getMovieMappings("/pathTo/movie_title.txt");
int movieId = movieMap.get(args[2]);
System.out.println(String.format("mv_%06d", movieId));
FileInputFormat.addInputPath( job,
new Path( "training_set",
String.format("mv_%06d", movieId)));
愿它有所帮助。