@@ -37,127 +37,53 @@ Linked Data Benchmark Council (http://www.ldbcouncil.org)
37
37
38
38
package ldbc .snb .datagen .serializer .snb .csv .dynamicserializer .person ;
39
39
40
+ import com .google .common .collect .ImmutableList ;
40
41
import ldbc .snb .datagen .dictionary .Dictionaries ;
41
42
import ldbc .snb .datagen .entities .dynamic .relations .Knows ;
42
43
import ldbc .snb .datagen .entities .dynamic .person .Person ;
43
44
import ldbc .snb .datagen .entities .dynamic .relations .StudyAt ;
44
45
import ldbc .snb .datagen .entities .dynamic .relations .WorkAt ;
45
46
import ldbc .snb .datagen .hadoop .writer .HDFSCSVWriter ;
46
47
import ldbc .snb .datagen .serializer .DynamicPersonSerializer ;
48
+ import ldbc .snb .datagen .serializer .snb .csv .FileName ;
47
49
import org .apache .hadoop .conf .Configuration ;
48
-
50
+ import static ldbc .snb .datagen .serializer .snb .csv .FileName .*;
51
+ import ldbc .snb .datagen .serializer .snb .csv .FileName ;
49
52
import java .io .IOException ;
50
53
import java .util .ArrayList ;
54
+ import java .util .Arrays ;
51
55
import java .util .Iterator ;
56
+ import java .util .List ;
52
57
53
58
public class CSVCompositeDynamicPersonSerializer extends DynamicPersonSerializer {
54
59
55
- private HDFSCSVWriter [] writers ;
56
-
57
- private enum FileNames {
58
- PERSON ("person" ),
59
- PERSON_LOCATED_IN_PLACE ("person_isLocatedIn_place" ),
60
- PERSON_HAS_INTEREST_TAG ("person_hasInterest_tag" ),
61
- PERSON_WORK_AT ("person_workAt_organisation" ),
62
- PERSON_STUDY_AT ("person_studyAt_organisation" ),
63
- PERSON_KNOWS_PERSON ("person_knows_person" );
64
-
65
- private final String name ;
66
-
67
- private FileNames (String name ) {
68
- this .name = name ;
69
- }
70
-
71
- public String toString () {
72
- return name ;
73
- }
74
- }
75
60
76
61
@ Override
77
- public void initialize (Configuration conf , int reducerId ) throws IOException {
78
- int numFiles = FileNames .values ().length ;
79
- writers = new HDFSCSVWriter [numFiles ];
80
- for (int i = 0 ; i < numFiles ; ++i ) {
81
- writers [i ] = new HDFSCSVWriter (conf .get ("ldbc.snb.datagen.serializer.socialNetworkDir" )+"/dynamic/" , FileNames
82
- .values ()[i ].toString () + "_" + reducerId , conf
83
- .getInt ("ldbc.snb.datagen.serializer.numPartitions" , 1 ), conf
84
- .getBoolean ("ldbc.snb.datagen.serializer.compressed" , false ), "|" , conf
85
- .getBoolean ("ldbc.snb.datagen.serializer.endlineSeparator" , false ));
86
- }
87
-
88
- ArrayList <String > arguments = new ArrayList <String >();
89
- arguments .add ("id" );
90
- arguments .add ("firstName" );
91
- arguments .add ("lastName" );
92
- arguments .add ("gender" );
93
- arguments .add ("birthday" );
94
- arguments .add ("creationDate" );
95
- arguments .add ("locationIP" );
96
- arguments .add ("browserUsed" );
97
- arguments .add ("language" );
98
- arguments .add ("email" );
99
- writers [FileNames .PERSON .ordinal ()].writeHeader (arguments );
100
-
101
- arguments .clear ();
102
- arguments .add ("Person.id" );
103
- arguments .add ("Place.id" );
104
- writers [FileNames .PERSON_LOCATED_IN_PLACE .ordinal ()].writeHeader (arguments );
105
-
106
- arguments .clear ();
107
- arguments .add ("Person.id" );
108
- arguments .add ("Tag.id" );
109
- writers [FileNames .PERSON_HAS_INTEREST_TAG .ordinal ()].writeHeader (arguments );
110
-
111
- arguments .clear ();
112
- arguments .add ("Person.id" );
113
- arguments .add ("Organisation.id" );
114
- arguments .add ("workFrom" );
115
- writers [FileNames .PERSON_WORK_AT .ordinal ()].writeHeader (arguments );
116
-
117
- arguments .clear ();
118
- arguments .add ("Person.id" );
119
- arguments .add ("Organisation.id" );
120
- arguments .add ("classYear" );
121
- writers [FileNames .PERSON_STUDY_AT .ordinal ()].writeHeader (arguments );
122
-
123
- arguments .clear ();
124
- arguments .add ("Person.id" );
125
- arguments .add ("Person.id" );
126
- arguments .add ("creationDate" );
127
- writers [FileNames .PERSON_KNOWS_PERSON .ordinal ()].writeHeader (arguments );
128
-
62
+ public List <FileName > getFileNames () {
63
+ return Arrays .asList (PERSON ,PERSON_LOCATED_IN_PLACE ,PERSON_HAS_INTEREST_TAG ,
64
+ PERSON_WORK_AT ,PERSON_STUDY_AT ,PERSON_KNOWS_PERSON )
129
65
}
130
66
131
67
@ Override
132
- public void close () {
133
- int numFiles = FileNames .values ().length ;
134
- for (int i = 0 ; i < numFiles ; ++i ) {
135
- writers [i ].close ();
136
- }
68
+ public void writeFileHeaders () {
69
+ writers .get (PERSON ).writeHeader (ImmutableList .of ("id" ,"firstName" ,"lastName" ,"gender" ,
70
+ "birthday" ,"creationDate" ,"locationIP" ,"browserUsed" ,"language" ,"email" ));
71
+ writers .get (PERSON_LOCATED_IN_PLACE ).writeHeader (ImmutableList .of ("Person.id" ,"Place.id" ));
72
+ writers .get (PERSON_HAS_INTEREST_TAG ).writeHeader (ImmutableList .of ("Person.id" ,"Tag.id" ));
73
+ writers .get (PERSON_WORK_AT ).writeHeader (ImmutableList .of ("Person.id" ,"Organisation.id" ,"workFrom" ));
74
+ writers .get (PERSON_STUDY_AT ).writeHeader (ImmutableList .of ("Person.id" ,"Organisation.id" ,"classYear" ));
75
+ writers .get (PERSON_KNOWS_PERSON ).writeHeader (ImmutableList .of ("Person.id" ,"Person.id" ,"creationDate" ));
76
+
137
77
}
138
78
139
79
@ Override
140
80
protected void serialize (final Person p ) {
141
-
142
- ArrayList <String > arguments = new ArrayList <String >();
143
-
144
- arguments .add (Long .toString (p .accountId ()));
145
- arguments .add (p .firstName ());
146
- arguments .add (p .lastName ());
81
+ String gender = "" ;
147
82
if (p .gender () == 1 ) {
148
- arguments . add ( "male" ) ;
83
+ gender = "male" ;
149
84
} else {
150
- arguments . add ( "female" ) ;
85
+ gender = "female" ;
151
86
}
152
-
153
- String dateString = Dictionaries .dates .formatDate (p .birthday ());
154
- arguments .add (dateString );
155
-
156
- dateString = Dictionaries .dates .formatDateTime (p .creationDate ());
157
- arguments .add (dateString );
158
- arguments .add (p .ipAddress ().toString ());
159
- arguments .add (Dictionaries .browsers .getName (p .browserId ()));
160
-
161
87
ArrayList <Integer > languages = p .languages ();
162
88
StringBuilder languagesBuilder = new StringBuilder ();
163
89
for (int i = 0 ; i < languages .size ()-1 ; i ++) {
@@ -166,8 +92,6 @@ protected void serialize(final Person p) {
166
92
if (languages .size () > 0 ) {
167
93
languagesBuilder .append (Dictionaries .languages .getLanguageName (languages .get (languages .size ()-1 )));
168
94
}
169
- arguments .add (languagesBuilder .toString ());
170
-
171
95
StringBuilder emailsBuilder = new StringBuilder ();
172
96
Iterator <String > itString = p .emails ().iterator ();
173
97
for (int i = 0 ; i < p .emails ().size ()-1 ; i ++) {
@@ -176,53 +100,35 @@ protected void serialize(final Person p) {
176
100
if (itString .hasNext ()) {
177
101
emailsBuilder .append (itString .next ());
178
102
}
179
- arguments .add (emailsBuilder .toString ());
180
103
181
- writers [FileNames .PERSON .ordinal ()].writeEntry (arguments );
104
+ writers .get (PERSON ).writeEntry (ImmutableList .of (Long .toString (p .accountId ()),p .firstName (),p .lastName (),
105
+ gender ,Dictionaries .dates .formatDate (p .birthday ()),Dictionaries .dates .formatDateTime (p .creationDate ()),
106
+ p .ipAddress ().toString (),Dictionaries .browsers .getName (p .browserId ()),languagesBuilder .toString (),
107
+ emailsBuilder .toString ()));
108
+
182
109
183
- arguments .clear ();
184
- arguments .add (Long .toString (p .accountId ()));
185
- arguments .add (Integer .toString (p .cityId ()));
186
- writers [FileNames .PERSON_LOCATED_IN_PLACE .ordinal ()].writeEntry (arguments );
110
+ writers .get (PERSON_LOCATED_IN_PLACE ).writeEntry (ImmutableList .of (Long .toString (p .accountId ()),Integer .toString (p .cityId ())));
187
111
188
112
Iterator <Integer > itInteger = p .interests ().iterator ();
189
113
while (itInteger .hasNext ()) {
190
- arguments .clear ();
191
114
Integer interestIdx = itInteger .next ();
192
- arguments .add (Long .toString (p .accountId ()));
193
- arguments .add (Integer .toString (interestIdx ));
194
- writers [FileNames .PERSON_HAS_INTEREST_TAG .ordinal ()].writeEntry (arguments );
115
+ writers .get (PERSON_HAS_INTEREST_TAG ).writeEntry (ImmutableList .of (Long .toString (p .accountId ()),Integer .toString (interestIdx )));
195
116
}
196
117
}
197
118
198
119
@ Override
199
120
protected void serialize (final StudyAt studyAt ) {
200
- ArrayList <String > arguments = new ArrayList <String >();
201
- String dateString = Dictionaries .dates .formatYear (studyAt .year );
202
- arguments .add (Long .toString (studyAt .user ));
203
- arguments .add (Long .toString (studyAt .university ));
204
- arguments .add (dateString );
205
- writers [FileNames .PERSON_STUDY_AT .ordinal ()].writeEntry (arguments );
121
+ writers .get (PERSON_STUDY_AT ).writeEntry (ImmutableList .of (Long .toString (studyAt .user ),Long .toString (studyAt .university ),Dictionaries .dates .formatYear (studyAt .year )));
206
122
}
207
123
208
124
@ Override
209
125
protected void serialize (final WorkAt workAt ) {
210
- ArrayList <String > arguments = new ArrayList <String >();
211
- String dateString = Dictionaries .dates .formatYear (workAt .year );
212
- arguments .add (Long .toString (workAt .user ));
213
- arguments .add (Long .toString (workAt .company ));
214
- arguments .add (dateString );
215
- writers [FileNames .PERSON_WORK_AT .ordinal ()].writeEntry (arguments );
126
+ writers .get (PERSON_WORK_AT ).writeEntry (ImmutableList .of (Long .toString (workAt .user ),Long .toString (workAt .company ),Dictionaries .dates .formatYear (workAt .year )));
216
127
}
217
128
218
129
@ Override
219
130
protected void serialize (final Person p , Knows knows ) {
220
- ArrayList <String > arguments = new ArrayList <String >();
221
- String dateString = Dictionaries .dates .formatDateTime (knows .creationDate ());
222
- arguments .add (Long .toString (p .accountId ()));
223
- arguments .add (Long .toString (knows .to ().accountId ()));
224
- arguments .add (dateString );
225
- writers [FileNames .PERSON_KNOWS_PERSON .ordinal ()].writeEntry (arguments );
131
+ writers .get (PERSON_KNOWS_PERSON ).writeEntry (ImmutableList .of (Long .toString (p .accountId ()),Long .toString (knows .to ().accountId ()), Dictionaries .dates .formatDateTime (knows .creationDate ())));
226
132
}
227
133
228
134
@ Override
0 commit comments