@Override public void abortTask(TaskAttemptContext context) throws IOException { if (!dynamicPartitioningUsed) { FileOutputFormatContainer.setWorkOutputPath(context); getBaseOutputCommitter().abortTask(HCatMapRedUtil.createTaskAttemptContext(context)); } else { try { TaskCommitContextRegistry.getInstance().abortTask(context); } finally { TaskCommitContextRegistry.getInstance().discardCleanupFor(context); } } }
@Override public void commitTask(TaskAttemptContext context) throws IOException { if (!dynamicPartitioningUsed) { //See HCATALOG-499 FileOutputFormatContainer.setWorkOutputPath(context); getBaseOutputCommitter().commitTask(HCatMapRedUtil.createTaskAttemptContext(context)); } else { try { TaskCommitContextRegistry.getInstance().commitTask(context); } finally { TaskCommitContextRegistry.getInstance().discardCleanupFor(context); } } }
/** * Method to discard the committer call-backs for a specified TaskAttemptID. * @param context The TaskAttemptContext instance for the task-attempt, identifying the output. * @throws java.io.IOException On failure. */ public synchronized void discardCleanupFor(TaskAttemptContext context) throws IOException { String key = generateKey(context); LOG.info("Discarding all cleanup for TaskAttemptID:" + key); if (!taskCommitters.containsKey(key)) { LOG.warn("No committer registered for TaskAttemptID:" + key); } else { taskCommitters.remove(key); } }
TaskCommitContextRegistry.getInstance().register(context, new TaskCommitContextRegistry.TaskCommitterProxy() { @Override public void abortTask(TaskAttemptContext context) throws IOException {
TaskCommitContextRegistry.getInstance().register(context, new TaskCommitContextRegistry.TaskCommitterProxy() { @Override public void abortTask(TaskAttemptContext context) throws IOException {
@Override public void abortTask(TaskAttemptContext context) throws IOException { if (!dynamicPartitioningUsed) { getBaseOutputCommitter().abortTask(HCatMapRedUtil.createTaskAttemptContext(context)); } else { try { TaskCommitContextRegistry.getInstance().abortTask(context); } finally { TaskCommitContextRegistry.getInstance().discardCleanupFor(context); } } }
@Override public void commitTask(TaskAttemptContext context) throws IOException { if (!dynamicPartitioningUsed) { // See HCATALOG-499 FileOutputFormatContainer.setWorkOutputPath(context); getBaseOutputCommitter().commitTask(HCatMapRedUtils.getOldTaskAttemptContext(context)); } else { try { TaskCommitContextRegistry.getInstance().commitTask(context); } finally { TaskCommitContextRegistry.getInstance().discardCleanupFor(context); } } }
TaskCommitContextRegistry.getInstance().register(context, new TaskCommitContextRegistry.TaskCommitterProxy() { @Override public void abortTask(TaskAttemptContext context) throws IOException {
/** * Method to register call-backs to control commits and aborts of TaskAttempts. * @param context The TaskAttemptContext instance for the task-attempt, identifying the output. * @param committer Instance of TaskCommitterProxy, to commit/abort a TaskAttempt. * @throws java.io.IOException On failure. */ public synchronized void register(TaskAttemptContext context, TaskCommitterProxy committer) throws IOException { String key = generateKey(context); LOG.info("Registering committer for TaskAttemptID:" + key); if (taskCommitters.containsKey(key)) { LOG.warn("Replacing previous committer:" + committer); } taskCommitters.put(key, committer); }
@Override public void abortTask(TaskAttemptContext context) throws IOException { if (!dynamicPartitioningUsed) { getBaseOutputCommitter().abortTask(HCatMapRedUtil.createTaskAttemptContext(context)); } else { try { TaskCommitContextRegistry.getInstance().abortTask(context); } finally { TaskCommitContextRegistry.getInstance().discardCleanupFor(context); } } }
@Override public void commitTask(TaskAttemptContext context) throws IOException { if (!dynamicPartitioningUsed) { //See HCATALOG-499 FileOutputFormatContainer.setWorkOutputPath(context); getBaseOutputCommitter().commitTask(HCatMapRedUtil.createTaskAttemptContext(context)); } else { try { TaskCommitContextRegistry.getInstance().commitTask(context); } finally { TaskCommitContextRegistry.getInstance().discardCleanupFor(context); } } }
TaskCommitContextRegistry.getInstance().register(context, new TaskCommitContextRegistry.TaskCommitterProxy() { @Override public void abortTask(TaskAttemptContext context) throws IOException {
/** * Trigger commit for TaskAttempt, as specified by the TaskAttemptContext argument. */ public synchronized void commitTask(TaskAttemptContext context) throws IOException { String key = generateKey(context); if (!taskCommitters.containsKey(key)) { LOG.warn("No callback registered for TaskAttemptID:" + key + ". Skipping."); return; } try { LOG.info("Committing TaskAttempt:" + key); taskCommitters.get(key).commitTask(context); } catch (Throwable t) { throw new IOException("Could not clean up TaskAttemptID:" + key, t); } }
@Override public void abortTask(TaskAttemptContext context) throws IOException { if (!dynamicPartitioningUsed) { getBaseOutputCommitter().abortTask(HCatMapRedUtil.createTaskAttemptContext(context)); } else { try { TaskCommitContextRegistry.getInstance().abortTask(context); } finally { TaskCommitContextRegistry.getInstance().discardCleanupFor(context); } } }
@Override public void commitTask(TaskAttemptContext context) throws IOException { if (!dynamicPartitioningUsed) { //See HCATALOG-499 FileOutputFormatContainer.setWorkOutputPath(context); getBaseOutputCommitter().commitTask(HCatMapRedUtil.createTaskAttemptContext(context)); } else { try { TaskCommitContextRegistry.getInstance().commitTask(context); } finally { TaskCommitContextRegistry.getInstance().discardCleanupFor(context); } } }
TaskCommitContextRegistry.getInstance().register(context, new TaskCommitContextRegistry.TaskCommitterProxy() { @Override public void abortTask(TaskAttemptContext context) throws IOException {
/** * Trigger abort for TaskAttempt, as specified by the TaskAttemptContext argument. */ public synchronized void abortTask(TaskAttemptContext context) throws IOException { String key = generateKey(context); if (!taskCommitters.containsKey(key)) { LOG.warn("No callback registered for TaskAttemptID:" + key + ". Skipping."); return; } try { LOG.info("Aborting TaskAttempt:" + key); taskCommitters.get(key).abortTask(context); } catch (Throwable t) { throw new IOException("Could not clean up TaskAttemptID:" + key, t); } }
@Override public void abortTask(TaskAttemptContext context) throws IOException { if (!dynamicPartitioningUsed) { getBaseOutputCommitter().abortTask(HCatMapRedUtils.getOldTaskAttemptContext(context)); } else { try { TaskCommitContextRegistry.getInstance().abortTask(context); } finally { TaskCommitContextRegistry.getInstance().discardCleanupFor(context); } } } }
@Override public void commitTask(TaskAttemptContext context) throws IOException { if (!dynamicPartitioningUsed) { //See HCATALOG-499 FileOutputFormatContainer.setWorkOutputPath(context); getBaseOutputCommitter().commitTask(HCatMapRedUtil.createTaskAttemptContext(context)); } else { try { TaskCommitContextRegistry.getInstance().commitTask(context); } finally { TaskCommitContextRegistry.getInstance().discardCleanupFor(context); } } }
/** * Method to register call-backs to control commits and aborts of TaskAttempts. * @param context The TaskAttemptContext instance for the task-attempt, identifying the output. * @param committer Instance of TaskCommitterProxy, to commit/abort a TaskAttempt. * @throws java.io.IOException On failure. */ public synchronized void register(TaskAttemptContext context, TaskCommitterProxy committer) throws IOException { String key = generateKey(context); LOG.info("Registering committer for TaskAttemptID:" + key); if (taskCommitters.containsKey(key)) { LOG.warn("Replacing previous committer:" + committer); } taskCommitters.put(key, committer); }