1919
2020import java .io .IOException ;
2121import java .util .ArrayList ;
22+ import java .util .HashMap ;
2223import java .util .Iterator ;
2324import java .util .LinkedList ;
24- import java .util .Map ;
25- import java .util .HashMap ;
2625import java .util .List ;
26+ import java .util .Map ;
27+ import org .apache .commons .lang3 .StringUtils ;
2728import org .apache .hadoop .conf .Configuration ;
2829import org .apache .hadoop .hbase .HBaseConfiguration ;
2930import org .apache .hadoop .hbase .HConstants ;
@@ -88,11 +89,11 @@ List<InputSplit> roundRobin(List<InputSplit> inputs) throws IOException {
8889 List <InputSplit > result = new ArrayList <>(inputs .size ());
8990 // Prepare a hashmap with each region server as key and list of Input Splits as value
9091 Map <String , List <InputSplit >> regionServerSplits = new HashMap <>();
91- for (InputSplit is : inputs ) {
92+ for (InputSplit is : inputs ) {
9293 if (is instanceof TableSplit ) {
93- String regionServer = ((TableSplit )is ).getRegionLocation ();
94- if (regionServer != null && !regionServer . isEmpty ( )) {
95- regionServerSplits .computeIfAbsent (regionServer , k -> new LinkedList <>()).add (is );
94+ String regionServer = ((TableSplit ) is ).getRegionLocation ();
95+ if (regionServer != null && !StringUtils . isBlank ( regionServer )) {
96+ regionServerSplits .computeIfAbsent (regionServer , k -> new ArrayList <>()).add (is );
9697 continue ;
9798 }
9899 }
@@ -101,15 +102,14 @@ List<InputSplit> roundRobin(List<InputSplit> inputs) throws IOException {
101102 }
102103 // Write out splits in a manner that spreads splits for a RegionServer to avoid 'clumping'.
103104 while (!regionServerSplits .isEmpty ()) {
104- Iterator <String > iterator = regionServerSplits .keySet ().iterator ();
105- while (iterator .hasNext ()) {
106- String regionServer = iterator .next ();
107- List <InputSplit > inputSplitListForRegion = regionServerSplits .get (regionServer );
105+ Iterator <List <InputSplit >> iter = regionServerSplits .values ().iterator ();
106+ while (iter .hasNext ()) {
107+ List <InputSplit > inputSplitListForRegion = iter .next ();
108108 if (!inputSplitListForRegion .isEmpty ()) {
109109 result .add (inputSplitListForRegion .remove (0 ));
110110 }
111111 if (inputSplitListForRegion .isEmpty ()) {
112- iterator .remove ();
112+ iter .remove ();
113113 }
114114 }
115115 }
0 commit comments