How to handle many of else in custom partition in mapreduce

I have an application where i am reading records from HBase and write into text files.
To separate records and write into text file i have used custom partitioner .

Now i have situation where i need to create 2000 text files from HBase table that has 200 regions .
So i have written 2000 if else condition in my partitioner class that does not looks good and for maintainability purpose that is not at all good.

I have tried creating Hashcode and using muduli operator on that but collision occurs and data mismatch happens .

I can not use Multioutput in mapper because it create one files per mapper per reducer so no of files becomes so many .

I can not cache data in HashMap and use because it will HashMap Will get initialized for every new mapper.
I am looking for some smart solution so basically i dont have to write so many if else .

Currently it looks like this

String str = value.toString();

	if (str.contains("Japan|^|BUS")) {
		return 0;
	} else if (str.contains("Japan|^|CAS")) {
		return 1;
	} else if (str.contains("Japan|^|CUS")) {
		return 2;
	} else if (str.contains("Japan|^|FTN")) {
		return 3;
	} else if (str.contains("Japan|^|GEO")) {
		return 4;
	} else if (str.contains("Japan|^|INC")) {
		return 5;
	} else if (str.contains("Japan|^|OPM")) {
		return 6;
	} else if (str.contains("Japan|^|PEN")) {
		return 7;
	} else if (str.contains("Japan|^|SHE")) {
		return 8;
	} else if (str.contains("Japan|^|BAL")) {
		return 9;

and it goes on and on .