我正在使用三列组合在HBase中创建行键。它是成功插入,我可以看到我的数据在日志也。日志中的数据正确,没有垃圾字符。但是当我扫描我的表,我可以看到x0Dx0A被附加在行键
123|x0Dx0A4295856150|404 column=cf:SegmentSequence, timestamp=1476249090712, value=2
123|x0Dx0A4295856150|404 column=cf:SegmentSequence.segmentId, timestamp=1476249090712, value=15
123|x0Dx0A4295856150|405 column=cf:FFAction, timestamp=1476249090712, value=I
。这就是我如何形成我的行键。
String strKey = strFileName + "|" + strOrgId + "|" + strLineItemId;
Put put = new Put(Bytes.toBytes(strKey));
这个字符也被附加在strOrgId之前和strFileName之后。
很明显,在strOrgId中有一个新的行字符(rn,其toBytes()值为x0Dx0A)在开始时根据数据样本。因此,您需要单独修剪包含新行的所有字符串,然后连接或需要将所有新行字符替换为空白。下面是根据数据示例仅针对strOrgId的精简代码。
String strKey = strFileName + "|" + strOrgId.trim() + "|" + strLineItemId;