Hadoop的TeraSort问题
第一步是运行TeraGen来产生数据,原始命令如下:
?
private void addRowId(long rowId) { byte[] rowid = Integer.toString((int) rowId).getBytes(); int padSpace = 10 - rowid.length; if (padSpace > 0) { value.append(spaces, 0, 10 - rowid.length); } value.append(rowid, 0, Math.min(rowid.length, 10)); }?第一行竟然对long型的rowId用了int强制类型转化,这样rowid怎么可能超过4个bytes,而设计的是10个bytes,因此就造成了rowid出现负数的情况。