public void doOperation(final AddElementsFromHdfs operation,
final Context context, final AccumuloStore store)
throws OperationException {
validateOperation(operation);
if (null == operation.getSplitsFilePath()) {
final String splitsFilePath = getPathWithSlashSuffix(operation.getWorkingPath()) + context.getJobId() + "/splits";
LOGGER.info("Using working directory for splits files: " + splitsFilePath);
operation.setSplitsFilePath(splitsFilePath);
}
try {
checkHdfsDirectories(operation, store);
} catch (final IOException e) {
throw new OperationException("Operation failed due to filesystem error: " + e.getMessage());
}
if (!operation.isUseProvidedSplits() && needsSplitting(store)) {
sampleAndSplit(operation, context, store);
}
fetchElements(operation, store);
final String skipImport = operation.getOption(AccumuloStoreConstants.ADD_ELEMENTS_FROM_HDFS_SKIP_IMPORT);
if (null == skipImport || !"TRUE".equalsIgnoreCase(skipImport)) {
importElements(operation, store);
} else {
LOGGER.info("Skipping import as {} was {}", AccumuloStoreConstants.ADD_ELEMENTS_FROM_HDFS_SKIP_IMPORT,
skipImport);
}
}