Skip to content

Commit a700684

Browse files
committed
Refactored PersonSerializer interface to pass person to export knows relationship api.
Added graphalytics person serializer.
1 parent d2b255c commit a700684

File tree

10 files changed

+142
-13
lines changed

10 files changed

+142
-13
lines changed

src/main/java/ldbc/snb/datagen/dictionary/FlashmobTagDictionary.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ private void initialize() {
123123
flashmobTag.tag = tags[i];
124124
instances.add(flashmobTag);
125125
flashmobTagCumDist[i] = flashmobTag;
126+
// if(tags[i] == 1761) System.out.println(flashmobTag);
126127
}
127128
Arrays.sort(flashmobTagCumDist);
128129
int size = flashmobTagCumDist.length;

src/main/java/ldbc/snb/datagen/generator/ForumGenerator.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ public Forum createWall(RandomGeneratorFarm randomFarm, long forumId, Person per
4343
return forum;
4444
}
4545

46-
4746
public Forum createGroup(RandomGeneratorFarm randomFarm, long forumId, Person person, ArrayList<Person> persons){
4847
long date = Dictionaries.dates.randomDate(randomFarm.get(RandomGeneratorFarm.Aspect.DATE), person.creationDate() + DatagenParams.deltaTime);
4948
if( date > Dictionaries.dates.getEndDateTime() ) return null;

src/main/java/ldbc/snb/datagen/hadoop/HadoopPersonSerializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public void reduce(BlockKey key, Iterable<Person> valueSet,Context context)
5757

5858
for( Knows k : p.knows() ) {
5959
if( k.creationDate() < Dictionaries.dates.getUpdateThreshold() || !DatagenParams.updateStreams ) {
60-
personSerializer_.export(p.accountId(), k);
60+
personSerializer_.export(p, k);
6161
}
6262
}
6363
}

src/main/java/ldbc/snb/datagen/objects/FlashmobTag.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
*/
3737
package ldbc.snb.datagen.objects;
3838

39+
import ldbc.snb.datagen.dictionary.Dictionaries;
40+
3941
public class FlashmobTag implements Comparable<FlashmobTag> {
4042
public int level;
4143
public long date;
@@ -55,4 +57,8 @@ public void copyTo(FlashmobTag t) {
5557
t.prob = this.prob;
5658
t.tag = this.tag;
5759
}
60+
61+
public String toString(){
62+
return "Level: "+level+" Date: "+Dictionaries.dates.formatDateDetail(date)+" Tag:"+ Dictionaries.tags.getName(tag);
63+
}
5864
}

src/main/java/ldbc/snb/datagen/serializer/PersonSerializer.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ public void export(Person person) {
4545
}
4646
}
4747

48-
public void export(long personId, Knows k ) {
49-
if( personId < k.to().accountId())
50-
serialize(personId, k);
48+
public void export(Person p, Knows k ) {
49+
if( p.accountId() < k.to().accountId())
50+
serialize(p, k);
5151
}
5252

5353
abstract public void initialize(Configuration conf, int reducerId);
@@ -60,5 +60,5 @@ public void export(long personId, Knows k ) {
6060

6161
abstract protected void serialize(WorkAt workAt);
6262

63-
abstract protected void serialize(long personId, Knows knows);
63+
abstract protected void serialize(Person p, Knows knows);
6464
}

src/main/java/ldbc/snb/datagen/serializer/empty/EmptyPersonSerializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ protected void serialize(WorkAt workAt) {
3232

3333
}
3434

35-
protected void serialize(long p, Knows knows) {
35+
protected void serialize(Person p, Knows knows) {
3636

3737
}
3838

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
/*
2+
* Copyright (c) 2013 LDBC
3+
* Linked Data Benchmark Council (http://ldbc.eu)
4+
*
5+
* This file is part of ldbc_socialnet_dbgen.
6+
*
7+
* ldbc_socialnet_dbgen is free software: you can redistribute it and/or modify
8+
* it under the terms of the GNU General Public License as published by
9+
* the Free Software Foundation, either version 3 of the License, or
10+
* (at your option) any later version.
11+
*
12+
* ldbc_socialnet_dbgen is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
* GNU General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU General Public License
18+
* along with ldbc_socialnet_dbgen. If not, see <http://www.gnu.org/licenses/>.
19+
*
20+
* Copyright (C) 2011 OpenLink Software <[email protected]>
21+
* All Rights Reserved.
22+
*
23+
* This program is free software; you can redistribute it and/or modify
24+
* it under the terms of the GNU General Public License as published by
25+
* the Free Software Foundation; only Version 2 of the License dated
26+
* June 1991.
27+
*
28+
* This program is distributed in the hope that it will be useful,
29+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
30+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31+
* GNU General Public License for more details.
32+
*
33+
* You should have received a copy of the GNU General Public License
34+
* along with this program; if not, write to the Free Software
35+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
36+
*/
37+
38+
39+
package ldbc.snb.datagen.serializer.graphalytics;
40+
41+
import ldbc.snb.datagen.dictionary.Dictionaries;
42+
import ldbc.snb.datagen.objects.Knows;
43+
import ldbc.snb.datagen.objects.Person;
44+
import ldbc.snb.datagen.objects.StudyAt;
45+
import ldbc.snb.datagen.objects.WorkAt;
46+
import ldbc.snb.datagen.serializer.HDFSCSVWriter;
47+
import ldbc.snb.datagen.serializer.PersonSerializer;
48+
import org.apache.hadoop.conf.Configuration;
49+
50+
import java.util.ArrayList;
51+
import java.util.Iterator;
52+
53+
public class CSVPersonSerializer extends PersonSerializer {
54+
55+
private HDFSCSVWriter [] writers;
56+
57+
private enum FileNames {
58+
PERSON_KNOWS_PERSON("person_knows_person");
59+
60+
private final String name;
61+
62+
private FileNames( String name ) {
63+
this.name = name;
64+
}
65+
public String toString() {
66+
return name;
67+
}
68+
}
69+
70+
public CSVPersonSerializer() {
71+
}
72+
73+
public void initialize(Configuration conf, int reducerId) {
74+
int numFiles = FileNames.values().length;
75+
writers = new HDFSCSVWriter[numFiles];
76+
for( int i = 0; i < numFiles; ++i) {
77+
writers[i] = new HDFSCSVWriter(conf.get("ldbc.snb.datagen.serializer.socialNetworkDir"), FileNames.values()[i].toString()+"_"+reducerId,conf.getInt("ldbc.snb.datagen.numPartitions",1),conf.getBoolean("ldbc.snb.datagen.serializer.compressed",false),"|");
78+
}
79+
80+
ArrayList<String> arguments = new ArrayList<String>();
81+
arguments.clear();
82+
arguments.add("Person.id");
83+
arguments.add("Person.id");
84+
arguments.add("Weight");
85+
writers[FileNames.PERSON_KNOWS_PERSON.ordinal()].writeEntry(arguments);
86+
87+
}
88+
89+
@Override
90+
public void close() {
91+
int numFiles = FileNames.values().length;
92+
for(int i = 0; i < numFiles; ++i) {
93+
writers[i].close();
94+
}
95+
}
96+
97+
@Override
98+
protected void serialize(Person p) {
99+
100+
}
101+
102+
@Override
103+
protected void serialize(StudyAt studyAt) {
104+
}
105+
106+
@Override
107+
protected void serialize(WorkAt workAt) {
108+
}
109+
110+
protected void serialize(Person p, Knows knows) {
111+
ArrayList<String> arguments = new ArrayList<String>();
112+
long denominator = knows.creationDate() - Math.min(p.creationDate(),knows.to().creationDate());
113+
long numerator = knows.creationDate() - Math.max(p.creationDate(),knows.to().creationDate());
114+
double weight = 1.0 - numerator/(double)denominator;
115+
arguments.add(Long.toString(p.accountId()));
116+
arguments.add(Long.toString(knows.to().accountId()));
117+
arguments.add(Double.toString(weight));
118+
writers[FileNames.PERSON_KNOWS_PERSON.ordinal()].writeEntry(arguments);
119+
}
120+
}

src/main/java/ldbc/snb/datagen/serializer/small/CSVPersonSerializer.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,11 @@ protected void serialize(StudyAt studyAt) {
118118
protected void serialize(WorkAt workAt) {
119119
}
120120

121-
protected void serialize(long personId, Knows knows) {
121+
@Override
122+
protected void serialize(Person p, Knows knows) {
122123
ArrayList<String> arguments = new ArrayList<String>();
123124

124-
arguments.add(Long.toString(personId));
125+
arguments.add(Long.toString(p.accountId()));
125126
arguments.add(Long.toString(knows.to().accountId()));
126127
writers[FileNames.PERSON_KNOWS_PERSON.ordinal()].writeEntry(arguments);
127128
}

src/main/java/ldbc/snb/datagen/serializer/snb/interactive/CSVMergeForeignPersonSerializer.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,10 +174,11 @@ protected void serialize(WorkAt workAt) {
174174
writers[FileNames.PERSON_WORK_AT.ordinal()].writeEntry(arguments);
175175
}
176176

177-
protected void serialize(long personId, Knows knows) {
177+
@Override
178+
protected void serialize( Person p, Knows knows) {
178179
ArrayList<String> arguments = new ArrayList<String>();
179180
String dateString = Dictionaries.dates.formatDateDetail(knows.creationDate());
180-
arguments.add(Long.toString(personId));
181+
arguments.add(Long.toString(p.accountId()));
181182
arguments.add(Long.toString(knows.to().accountId()));
182183
arguments.add(dateString);
183184
writers[FileNames.PERSON_KNOWS_PERSON.ordinal()].writeEntry(arguments);

src/main/java/ldbc/snb/datagen/serializer/snb/interactive/CSVPersonSerializer.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,10 +218,11 @@ protected void serialize(WorkAt workAt) {
218218
writers[FileNames.PERSON_WORK_AT.ordinal()].writeEntry(arguments);
219219
}
220220

221-
protected void serialize(long personId, Knows knows) {
221+
@Override
222+
protected void serialize(Person p, Knows knows) {
222223
ArrayList<String> arguments = new ArrayList<String>();
223224
String dateString = Dictionaries.dates.formatDateDetail(knows.creationDate());
224-
arguments.add(Long.toString(personId));
225+
arguments.add(Long.toString(p.accountId()));
225226
arguments.add(Long.toString(knows.to().accountId()));
226227
arguments.add(dateString);
227228
writers[FileNames.PERSON_KNOWS_PERSON.ordinal()].writeEntry(arguments);

0 commit comments

Comments
 (0)