class FileSystemOutputFormat implements OutputFormat<T>, FinalizeOnMaster, Serializable {

	@Override
	public void open(int taskNumber, int numTasks) throws IOException {
		try {
			PartitionTempFileManager fileManager = new PartitionTempFileManager(
					fsFactory, tmpPath, taskNumber, CHECKPOINT_ID, outputFileConfig);
			PartitionWriter.Context<T> context = new PartitionWriter.Context<>(
					parameters, formatFactory);
			writer = PartitionWriterFactory.<T>get(
					partitionColumns.length - staticPartitions.size() > 0,
					dynamicGrouped,
					staticPartitions).create(context, fileManager, computer);
		} catch (Exception e) {
			throw new TableException("Exception in open", e);
		}
	}

	private  FileSystemOutputFormat(
			FileSystemFactory fsFactory,
			TableMetaStoreFactory msFactory,
			boolean overwrite,
			Path tmpPath,
			String[] partitionColumns,
			boolean dynamicGrouped,
			LinkedHashMap<String, String> staticPartitions,
			OutputFormatFactory<T> formatFactory,
			PartitionComputer<T> computer,
			OutputFileConfig outputFileConfig);

}