Нам дали в качестве назначения задача создания функций снижения карты, которые будут выходить для каждого узла n в веб -графике Google. Список узлов, которые вы можете перейти из узла n в 3 хмеле. (Фактические данные можно найти здесь: http://snap.stanford.edu/data/web-google.html)
Вот пример того, как элементы в списке будут:
1 2
1 3
2 4
3 4
3 5
4 1
4 5
4 6
5 6
из вышеуказанного графика примера будет этим
< /p>
В приведенном выше упрощенном примере пути, например узла 1:
α [1 -> 2 -> 4 -> 1] , [1 -> 2 -> 4 -> 5], [1 -> 2 -> 4 -> 6], [1 -> 3 -> 4 -> 1],
[1 -> 3 - > 4 -> 5], [1 -> 3 -> 4 -> 6] και [1 -> 3 -> 5 -> 6]
, и, таким образом, карта уменьшается для узла 1 Вершины 1, 5,6 (
(a) Каждая вершина должна учитываться только один раз, а
(b) мы включаем текущую вершину, только когда есть круговой путь длины 3, как это пример [1 - > 2 -> 4 -> 1] и [1 -> 3 -> 4 -> 1]. < /P>
Я очень потерян, потому что я считаю, что это требует знания графика Теория и алгоритмы, и нас не учили, что это связано с этим в кратчайшие теории пути и тому подобное, но я не уверен, будет ли это полезно для этого конкретного упражнения) < /p>
Заранее спасибо и хорошего сезона отпуска. /p>
edit < /em> < /strong> < /p>
Я пытаюсь создать пособие Список, но хотя я ожидаю, что вывод будет "вертексид" "Node1 Node2 Node3 Node4 ..." Я вижу, что в выходном файле мой редуктор расщепляет список для каждого идентификатора вершины в пары из трех. < /p>
Например, если у меня есть вершина A, которая подключается к z, x, c, v, b, n, m ,, g, h, j, k, l i, он выводит это как < /p>
z, x, c < /p>
a v, b, n < /p>
A m, g, h < /p>
a j, k, l < /p>
ниже мой Mapper и Reducer < /p >
public class AdjacentsListDriver extends Configured implements Tool {
@Override
public int run(String[] args) throws Exception {
Configuration conf = getConf();
Job job = Job.getInstance(conf);
job.setJobName("Test driver");
job.setJarByClass(AdjacentsListDriver.class);
String[] arg0 = new GenericOptionsParser(conf, args).getRemainingArgs();
if (arg0.length != 2) {
System.err.println("Usage: hadoop jar ");
System.exit(1);
}
Path in = new Path(arg0[0]);
Path out = new Path(arg0[1]);
FileInputFormat.setInputPaths(job, in);
FileOutputFormat.setOutputPath(job, out);
job.setMapperClass(ListMapper.class);
job.setReducerClass(ListReducer.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.waitForCompletion(true);
return 0;
}
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new Configuration(), new AdjacentsListDriver(), args);
System.exit(res);
}
}
/**
* @author George
* Theoretically this takes a key(vertexID) and maps all nodes that are connected to it in one hop....
*
*/
public class ListMapper extends Mapper {
private Text vertexID = new Text();
//private LongWritable vertice= new LongWritable(0);
private Text vertice=new Text();
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String line = value.toString();
StringTokenizer itr = new StringTokenizer(line,"\n");
StringTokenizer itrInside;
//vertice=new LongWritable(Long.valueOf(value.toString()).longValue());
while (itr.hasMoreTokens()) {
if(itr.countTokens() > 2){
}//ignore first line ??
else{
itrInside=new StringTokenizer(itr.toString());
vertexID.set(itr.nextToken());
while(itrInside.hasMoreTokens()){
vertice.set(itrInside.nextToken());
context.write(vertexID, value);
}
}
}
}
}
@override
public class ListReducer extends Reducer{
public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException {
String vertices="";
for (Text value : values) {
if(vertices=="")
vertices+=value.toString();
else
vertices=vertices+","+value.toString();
}
Text value=new Text();
value.set(vertices);
context.write(key, value);
}
}
Подробнее здесь: https://stackoverflow.com/questions/207 ... -web-graph
Карта Hadoop Mart для Google Web Graph ⇐ JAVA
Программисты JAVA общаются здесь
1738153596
Anonymous
Нам дали в качестве назначения задача создания функций снижения карты, которые будут выходить для каждого узла n в веб -графике Google. Список узлов, которые вы можете перейти из узла n в 3 хмеле. (Фактические данные можно найти здесь: http://snap.stanford.edu/data/web-google.html)
Вот пример того, как элементы в списке будут:
1 2
1 3
2 4
3 4
3 5
4 1
4 5
4 6
5 6
из вышеуказанного графика примера будет этим
< /p>
В приведенном выше упрощенном примере пути, например узла 1:
α [1 -> 2 -> 4 -> 1] , [1 -> 2 -> 4 -> 5], [1 -> 2 -> 4 -> 6], [1 -> 3 -> 4 -> 1],
[1 -> 3 - > 4 -> 5], [1 -> 3 -> 4 -> 6] και [1 -> 3 -> 5 -> 6]
, и, таким образом, карта уменьшается для узла 1 Вершины 1, 5,6 (
(a) Каждая вершина должна учитываться только один раз, а
(b) мы включаем текущую вершину, только когда есть круговой путь длины 3, как это пример [1 - > 2 -> 4 -> 1] и [1 -> 3 -> 4 -> 1]. < /P>
Я очень потерян, потому что я считаю, что это требует знания графика Теория и алгоритмы, и нас не учили, что это связано с этим в кратчайшие теории пути и тому подобное, но я не уверен, будет ли это полезно для этого конкретного упражнения) < /p>
Заранее спасибо и хорошего сезона отпуска. /p>
edit < /em> < /strong> < /p>
Я пытаюсь создать пособие Список, но хотя я ожидаю, что вывод будет "вертексид" "Node1 Node2 Node3 Node4 ..." Я вижу, что в выходном файле мой редуктор расщепляет список для каждого идентификатора вершины в пары из трех. < /p>
Например, если у меня есть вершина A, которая подключается к z, x, c, v, b, n, m ,, g, h, j, k, l i, он выводит это как < /p>
z, x, c < /p>
a v, b, n < /p>
A m, g, h < /p>
a j, k, l < /p>
ниже мой Mapper и Reducer < /p >
public class AdjacentsListDriver extends Configured implements Tool {
@Override
public int run(String[] args) throws Exception {
Configuration conf = getConf();
Job job = Job.getInstance(conf);
job.setJobName("Test driver");
job.setJarByClass(AdjacentsListDriver.class);
String[] arg0 = new GenericOptionsParser(conf, args).getRemainingArgs();
if (arg0.length != 2) {
System.err.println("Usage: hadoop jar ");
System.exit(1);
}
Path in = new Path(arg0[0]);
Path out = new Path(arg0[1]);
FileInputFormat.setInputPaths(job, in);
FileOutputFormat.setOutputPath(job, out);
job.setMapperClass(ListMapper.class);
job.setReducerClass(ListReducer.class);
job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(TextOutputFormat.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.waitForCompletion(true);
return 0;
}
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new Configuration(), new AdjacentsListDriver(), args);
System.exit(res);
}
}
/**
* @author George
* Theoretically this takes a key(vertexID) and maps all nodes that are connected to it in one hop....
*
*/
public class ListMapper extends Mapper {
private Text vertexID = new Text();
//private LongWritable vertice= new LongWritable(0);
private Text vertice=new Text();
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String line = value.toString();
StringTokenizer itr = new StringTokenizer(line,"\n");
StringTokenizer itrInside;
//vertice=new LongWritable(Long.valueOf(value.toString()).longValue());
while (itr.hasMoreTokens()) {
if(itr.countTokens() > 2){
}//ignore first line ??
else{
itrInside=new StringTokenizer(itr.toString());
vertexID.set(itr.nextToken());
while(itrInside.hasMoreTokens()){
vertice.set(itrInside.nextToken());
context.write(vertexID, value);
}
}
}
}
}
@override
public class ListReducer extends Reducer{
public void reduce(Text key, Iterable values, Context context) throws IOException, InterruptedException {
String vertices="";
for (Text value : values) {
if(vertices=="")
vertices+=value.toString();
else
vertices=vertices+","+value.toString();
}
Text value=new Text();
value.set(vertices);
context.write(key, value);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/20774253/hadoop-map-reduce-for-google-web-graph[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия