Skip to content

Commit cec5323

Browse files
committed
.
1 parent c73f887 commit cec5323

File tree

5 files changed

+23
-16
lines changed

5 files changed

+23
-16
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,13 @@ public int compareTo(PersonTuple b) {
7272
}
7373
}
7474

75-
public void generateKnows( ArrayList<Person> persons, int seed, float upperBound ) {
75+
public void generateKnows( ArrayList<Person> persons, int seed, float upperBound, boolean firstStep ) {
7676
Random random = new Random();
7777
Map<Long, Integer> personPosition = new HashMap<Long, Integer>();
7878
for( int i = 0; i < persons.size(); ++i ) {
7979
personPosition.put(persons.get(i).accountId(), i);
8080
}
81-
distanceKnowsGenerator_.generateKnows(persons,seed,upperBound);
81+
distanceKnowsGenerator_.generateKnows(persons,seed,upperBound, firstStep);
8282
PersonGraph bestGraph = new PersonGraph(persons);
8383
MinHash minHash = new MinHash(numMinHashes_, 0);
8484
double bestCC = GraphUtils.ClusteringCoefficient(bestGraph);

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

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,21 @@ public DistanceKnowsGenerator() {
1818
this.randomFarm = new RandomGeneratorFarm();
1919
}
2020

21-
public void generateKnows( ArrayList<Person> persons, int seed, float percentage ) {
21+
public void generateKnows( ArrayList<Person> persons, int seed, float percentage, boolean firstStep ) {
2222
randomFarm.resetRandomGenerators(seed);
2323
for( int i = 0; i < persons.size(); ++i ) {
2424
Person p = persons.get(i);
25-
for( int j = i+1; ( target_edges(p, percentage) > p.knows().size() ) && ( j < persons.size() ); ++j ) {
26-
if( know(p, persons.get(j), j - i, percentage)) {
25+
for( int j = i+1; ( target_edges(p, percentage, firstStep) > p.knows().size() ) && ( j < persons.size() ); ++j ) {
26+
if( know(p, persons.get(j), j - i, percentage, firstStep)) {
2727
createKnow(p, persons.get(j));
2828
}
2929
}
3030
}
3131
}
3232

33-
boolean know( Person personA, Person personB, int dist, float percentage ) {
34-
if((float)(personA.knows().size()) >= target_edges(personA,percentage) ||
35-
personB.knows().size() >= target_edges(personA,percentage) ) return false;
33+
boolean know( Person personA, Person personB, int dist, float percentage, boolean firstStep ) {
34+
if((float)(personA.knows().size()) >= target_edges(personA,percentage, firstStep) ||
35+
personB.knows().size() >= target_edges(personB,percentage, firstStep) ) return false;
3636
double randProb = randomFarm.get(RandomGeneratorFarm.Aspect.UNIFORM).nextDouble();
3737
double prob = Math.pow(DatagenParams.baseProbCorrelated, dist);
3838
if ((randProb < prob) || (randProb < DatagenParams.limitProCorrelated)) {
@@ -55,7 +55,11 @@ void createKnow( Person personA, Person personB ) {
5555
}
5656
}
5757

58-
float target_edges(Person person, float percentage) {
59-
return (float)(person.maxNumKnows())*percentage;
58+
long target_edges(Person person, float percentage, boolean firstStep) {
59+
long max = (long) (person.maxNumKnows() * percentage);
60+
if(max == 0 && firstStep ) {
61+
return person.maxNumKnows();
62+
}
63+
return max;
6064
}
6165
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@
88
* Created by aprat on 11/06/15.
99
*/
1010
public interface KnowsGenerator {
11-
public void generateKnows( ArrayList<Person> persons, int seed, float upperBound );
11+
public void generateKnows( ArrayList<Person> persons, int seed, float upperBound, boolean firstStep );
1212
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,19 +83,19 @@ public int runGenerateJob(Configuration conf) throws Exception {
8383

8484
printProgress("Creating university location correlated edges");
8585
long startUniversity = System.currentTimeMillis();
86-
HadoopKnowsGenerator knowsGenerator = new HadoopKnowsGenerator(conf,"ldbc.snb.datagen.hadoop.UniversityKeySetter", "ldbc.snb.datagen.hadoop.RandomKeySetter", 0.45f);
86+
HadoopKnowsGenerator knowsGenerator = new HadoopKnowsGenerator(conf,"ldbc.snb.datagen.hadoop.UniversityKeySetter", "ldbc.snb.datagen.hadoop.RandomKeySetter", 0.45f,true);
8787
knowsGenerator.run(hadoopPrefix+"/persons",hadoopPrefix+"/universityEdges");
8888
long endUniversity = System.currentTimeMillis();
8989

9090
printProgress("Creating main interest correlated edges");
9191
long startInterest= System.currentTimeMillis();
92-
knowsGenerator = new HadoopKnowsGenerator(conf,"ldbc.snb.datagen.hadoop.InterestKeySetter", "ldbc.snb.datagen.hadoop.RandomKeySetter", 0.45f);
92+
knowsGenerator = new HadoopKnowsGenerator(conf,"ldbc.snb.datagen.hadoop.InterestKeySetter", "ldbc.snb.datagen.hadoop.RandomKeySetter", 0.45f,false);
9393
knowsGenerator.run(hadoopPrefix+"/persons",hadoopPrefix+"/interestEdges");
9494
long endInterest = System.currentTimeMillis();
9595

9696
printProgress("Creating random correlated edges");
9797
long startRandom= System.currentTimeMillis();
98-
knowsGenerator = new HadoopKnowsGenerator(conf,"ldbc.snb.datagen.hadoop.RandomKeySetter", "ldbc.snb.datagen.hadoop.RandomKeySetter", 0.1f);
98+
knowsGenerator = new HadoopKnowsGenerator(conf,"ldbc.snb.datagen.hadoop.RandomKeySetter", "ldbc.snb.datagen.hadoop.RandomKeySetter", 0.1f,false);
9999
knowsGenerator.run(hadoopPrefix+"/persons",hadoopPrefix+"/randomEdges");
100100
long endRandom= System.currentTimeMillis();
101101

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public void reduce(BlockKey key, Iterable<Person> valueSet,Context context)
4848
for( Person p : valueSet ) {
4949
persons.add(new Person(p));
5050
}
51-
this.knowsGenerator.generateKnows(persons, (int)key.block, conf.getFloat("upperBound", 0.1f));
51+
this.knowsGenerator.generateKnows(persons, (int)key.block, conf.getFloat("upperBound", 0.1f), conf.getBoolean("firstStep",false));
5252
for( Person p : persons ) {
5353
context.write(keySetter.getKey(p), p);
5454
}
@@ -59,13 +59,15 @@ public void reduce(BlockKey key, Iterable<Person> valueSet,Context context)
5959
private double upperBound;
6060
private String preKeySetterName;
6161
private String postKeySetterName;
62+
private boolean firstStep;
6263

6364

64-
public HadoopKnowsGenerator( Configuration conf, String preKeySetterName, String postKeySetterName, float upperBound ) {
65+
public HadoopKnowsGenerator( Configuration conf, String preKeySetterName, String postKeySetterName, float upperBound, boolean firstStep ) {
6566
this.conf = conf;
6667
this.upperBound = upperBound;
6768
this.preKeySetterName = preKeySetterName;
6869
this.postKeySetterName = postKeySetterName;
70+
this.firstStep = firstStep;
6971
}
7072

7173
public void run( String inputFileName, String outputFileName ) throws Exception {
@@ -94,6 +96,7 @@ public void run( String inputFileName, String outputFileName ) throws Exception
9496
System.out.println("... Time to rank persons: "+ (System.currentTimeMillis() - start)+" ms");
9597

9698
conf.set("upperBound",Double.toString(upperBound));
99+
conf.setBoolean("firstStep",firstStep);
97100
conf.set("postKeySetterName",postKeySetterName);
98101
int numThreads = Integer.parseInt(conf.get("ldbc.snb.datagen.generator.numThreads"));
99102
Job job = Job.getInstance(conf, "Knows generator");

0 commit comments

Comments
 (0)