/** * Check whether a configuration is fully configured to be used with an Accumulo * {@link org.apache.hadoop.mapreduce.InputFormat}. * * @param context the Hadoop context for the configured job * @throws IOException if the context is improperly configured * @since 1.5.0 */ protected static void validateOptions(final JobContext context) throws IOException { // attempt to // get each // of the // GeoWave // stores // from the job context try { final Map<String, String> configOptions = getStoreOptionsMap(context); final StoreFactoryFamilySpi factoryFamily = GeoWaveStoreFinder.findStoreFamily(configOptions); if (factoryFamily == null) { final String msg = "Unable to find GeoWave data store"; LOGGER.warn(msg); throw new IOException(msg); } } catch (final Exception e) { LOGGER.warn("Error finding GeoWave stores", e); throw new IOException("Error finding GeoWave stores", e); } }
@Override public RecordReader<GeoWaveInputKey, T> createRecordReader( final InputSplit split, final TaskAttemptContext context) throws IOException, InterruptedException { final Map<String, String> configOptions = getStoreOptionsMap(context); final DataStore dataStore = GeoWaveStoreFinder.createDataStore(configOptions); if ((dataStore != null) && (dataStore instanceof MapReduceDataStore)) { return (RecordReader<GeoWaveInputKey, T>) ((MapReduceDataStore) dataStore).createRecordReader( getCommonQueryOptions(context), getDataTypeQueryOptions(context), getIndexQueryOptions(context), getQueryConstraints(context), getJobContextAdapterStore(context), getJobContextInternalAdapterStore(context), getJobContextAdapterIndexMappingStore(context), getJobContextDataStatisticsStore(context), getJobContextIndexStore(context), isOutputWritable(context).booleanValue(), split); } LOGGER.error("Data Store does not support map reduce"); throw new IOException("Data Store does not support map reduce"); }
@Override public List<InputSplit> getSplits(final JobContext context) throws IOException, InterruptedException { final Map<String, String> configOptions = getStoreOptionsMap(context); final DataStore dataStore = GeoWaveStoreFinder.createDataStore(configOptions); if ((dataStore != null) && (dataStore instanceof MapReduceDataStore)) { return ((MapReduceDataStore) dataStore).getSplits( getCommonQueryOptions(context), getDataTypeQueryOptions(context), getIndexQueryOptions(context), getQueryConstraints(context), getJobContextAdapterStore(context), getJobContextAdapterIndexMappingStore(context), getJobContextDataStatisticsStore(context), getJobContextInternalAdapterStore(context), getJobContextIndexStore(context), context, getMinimumSplitCount(context), getMaximumSplitCount(context)); } LOGGER.error("Data Store does not support map reduce"); throw new IOException("Data Store does not support map reduce"); } }