The following sample program will be used to illustrate the Bulk Load classes and methods.
class BulkLoadDemo {
Record makeProductRecord(String name, int size, double price) {
Record.Builder recBuilder = Record.newBuilder();
Assignment.Builder assgtBuilder = Assignment.newBuilder();
assgtBuilder.setName("Name");
assgtBuilder.setStringValue(name);
assgtBuilder.setDataType(Assignment.DataType.STRING);
Assignment nameAssgt = assgtBuilder.build();
recBuilder.setSpec(nameAssgt);
assgtBuilder.clear();
assgtBuilder.setName("Size");
assgtBuilder.setIntValue(size);
assgtBuilder.setDataType(Assignment.DataType.INT);
Assignment sizeAssgt = assgtBuilder.build();
recBuilder.addAssignments(sizeAssgt);
assgtBuilder.clear();
assgtBuilder.setName("Price");
assgtBuilder.setDoubleValue(price);
assgtBuilder.setDataType(Assignment.DataType.DOUBLE);
Assignment priceAssgt = assgtBuilder.build();
recBuilder.addAssignments(priceAssgt);
Record product = recBuilder.build();
return product;
}
void main(int argc, String[] argv) {
ErrorCallback errorCallback = new ErrorCallback() {
void handleError(String reason, Record reject) {
System.out.println("Record "
+ reject.getSpec().getName()
+ " rejected: " + reason);
}
};
FinishedCallback finishedCallback = new FinishedCallback() {
void handleFinish() {
System.out.println("Finished!");
}
};
AbortCallback abortCallback = new AbortCallback() {
void handleAbort(String reason) {
System.out.println("Aborted: " + reason);
}
};
StatusCallback statusCallback = new StatusCallback() {
void handleStatus(long recordsAdded,
long recordsQueued,
long recordsRejected,
String state) {
System.out.println("Added: " + recordsAdded + "\n"
+ "Queued: " + recordsQueued + "\n"
+ "Rejected: " + recordsRejected + "\n"
+ "State: " + state + "\n");
}
};
BulkIngester ingester("endecaserver.example.com",
1234, // port
false, // useSSL
true, // doFinalMerge
true, // doUpdateDictionary
90000 // timeout in ms
errorCallback,
finishedCallback,
abortCallback,
statusCallback);
Record widget = makeProductRecord("Widget", 12, 99.95);
Record thing = makeProductRecord("Thing", 110, 3.14);
ingester.begin();
ingester.sendRecord(widget);
ingester.requestStatusUpdate();
ingester.sendRecord(thing);
ingester.endIngest();
}
}
If you want your program to log information, you can use the Apache Logging component to implement commons-logging. To do so, download the commons-logging-1.1.x.jar and related documentation from the Apache Commons site at http://commons.apache.org.