Description
I get ArrayIndexOutOfBoundsException while building cube, and the error is caused by one dimension(I think measure can not be so long) value is longer than 4096 bytes.
I check source code and find the reason:
1、it specify max split length is 4096 when create BytesSplitter object in setup.
2、in BytesSplitter.split function which split all items in one row with delimiter, and using System.arraycopy(bytes, offset, split.value, 0, length); copy every item to a SplittedBytes object named split. and before this line , it execute split.length = length; to set the split length.
3、while executing the copy code, it throw ArrayIndexOutOfBoundsException because the real item length is bigger than 4096!
4、in mapper function, the exception will catched and execute handleErrorRecord function to handle it, However, in this function it will call use splits again(in toString function), ArrayIndexOutOfBoundsException will throw again.
5、There is not one catch this exception, which casue the mapper execute failed.
That is all my situation and analysis, I will modify source code to continue my job building and I will upload my patch later.