package com.stripe.zerowing; import org.apache.hadoop.conf.Configuration; public class ConfigUtil { public static final String TRANSLATOR_CLASS = "zerowing.translator_class"; public static final String TEMPORARY_HFILE_PATH = "zerowing.import.tmp_hfile_path"; public static final String SHOULD_PRESPLIT_TABLE = "zerowing.import.presplit_table"; public static final String PRESPLIT_TABLE_REGION_SIZE = "zerowing.import.resplit_table_chunk_size"; public static final String MERGE_EXISTING_TABLE = "zerowing.import.merge_existing"; public static final String SKIP_BACKLOG = "zerowing.tailer.skip_backlog"; public static final String SKIP_UPDATES = "zerowing.tailer.skip_updates"; public static final String SKIP_DELETES = "zerowing.tailer.skip_deletes"; public static final String BUFFER_WRITES = "zerowing.tailer.buffer_writes"; public static final String TAILER_STATE_TABLE = "zerowing.tailer.state_table"; public static final String DEFAULT_TEMPORARY_HFILE_PATH = "/tmp/zerowing_hfile_out"; public static final long DEFAULT_PRESPLIT_TABLE_REGION_SIZE = 10737418240L; //10gb public static final String DEFAULT_TAILER_STATE_TABLE = "_zw_tailers"; public static void setTranslatorClass(Configuration conf, Class<? extends Translator> translatorClass) { conf.setClass(TRANSLATOR_CLASS, translatorClass, Translator.class); } public static Class<? extends Translator> getTranslatorClass(Configuration conf) { return conf.getClass(TRANSLATOR_CLASS, BasicTranslator.class, Translator.class); } public static Translator getTranslator(Configuration conf) { Class<? extends Translator> translatorClass = ConfigUtil.getTranslatorClass(conf); try { return translatorClass.newInstance(); } catch (Exception e) { throw new RuntimeException("Error instantiating ZWTranslator class", e); } } public static void setTemporaryHFilePath(Configuration conf, String hfilePath) { conf.set(TEMPORARY_HFILE_PATH, hfilePath); } public static String getTemporaryHFilePath(Configuration conf) { return conf.get(TEMPORARY_HFILE_PATH, DEFAULT_TEMPORARY_HFILE_PATH); } public static void setPresplitTable(Configuration conf, boolean presplitTable) { conf.setBoolean(SHOULD_PRESPLIT_TABLE, presplitTable); } public static boolean getPresplitTable(Configuration conf) { return conf.getBoolean(SHOULD_PRESPLIT_TABLE, true); } public static void setPresplitTableRegionSize(Configuration conf, int numBytes) { conf.setInt(PRESPLIT_TABLE_REGION_SIZE, numBytes); } public static long getPresplitTableRegionSize(Configuration conf) { return conf.getLong(PRESPLIT_TABLE_REGION_SIZE, DEFAULT_PRESPLIT_TABLE_REGION_SIZE); } public static void setMergeExistingTable(Configuration conf, boolean mergeExisting) { conf.setBoolean(MERGE_EXISTING_TABLE, mergeExisting); } public static boolean getMergeExistingTable(Configuration conf) { return conf.getBoolean(MERGE_EXISTING_TABLE, false); } public static void setSkipBacklog(Configuration conf, boolean skipBacklog) { conf.setBoolean(SKIP_BACKLOG, skipBacklog); } public static boolean getSkipBacklog(Configuration conf) { return conf.getBoolean(SKIP_BACKLOG, false); } public static void setSkipUpdates(Configuration conf, boolean skipUpdates) { conf.setBoolean(SKIP_UPDATES, skipUpdates); } public static boolean getSkipUpdates(Configuration conf) { return conf.getBoolean(SKIP_UPDATES, false); } public static void setSkipDeletes(Configuration conf, boolean skipDeletes) { conf.setBoolean(SKIP_DELETES, skipDeletes); } public static boolean getSkipDeletes(Configuration conf) { return conf.getBoolean(SKIP_DELETES, false); } public static void setBufferWrites(Configuration conf, boolean autoFlush) { conf.setBoolean(BUFFER_WRITES, autoFlush); } public static boolean getBufferWrites(Configuration conf) { return conf.getBoolean(BUFFER_WRITES, false); } public static void setTailerStateTable(Configuration conf, String stateTableName) { conf.set(TAILER_STATE_TABLE, stateTableName); } public static String getTailerStateTable(Configuration conf) { return conf.get(TAILER_STATE_TABLE, DEFAULT_TAILER_STATE_TABLE); } }