public void setup(Context context) {

		// read distributed catch file
		try {
			Path[] localFiles = DistributedCache.getLocalCacheFiles(context.getConfiguration());
			COUNT_OF_TABLE = readLocalFile(localFiles[1]).size();

			// init
			TABLE_KEY = new ArrayList[COUNT_OF_TABLE];
			TABLE_VALUE = new ArrayList[COUNT_OF_TABLE];
			for (int i = 0; i < TABLE_KEY.length; i++) {
				TABLE_KEY[i] = new ArrayList<Integer>();
				TABLE_VALUE[i] = new ArrayList<String>();
			}

			// save to global List
			FileReader fr = new FileReader(localFiles[localFiles.length - 1].toString());// part-r-00000
			BufferedReader br = new BufferedReader(fr);
			String tmp[];
			while (br.ready()) {
				tmp = br.readLine().split(TAB); // pki i jc "" col
				if (!TABLE_MAP.contains(tmp[1])) {
					TABLE_MAP.add(tmp[1]);
				}
				TABLE_KEY[TABLE_MAP.indexOf(tmp[1])].add(Integer.parseInt(tmp[0]));// pki
				if (tmp.length < 5) {
					TABLE_VALUE[TABLE_MAP.indexOf(tmp[1])].add(EMPTY);// col
				} else {
					TABLE_VALUE[TABLE_MAP.indexOf(tmp[1])].add(tmp[4]);// col
				}
			}

			br.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}