0

hbase我正在从我的 java 程序中插入数据。由于我们需要将所有内容转换为字节数组以插入到 hbase 中,所以我正在这样做。但是当我的输入字符串中有任何换行符时,它会在 hbase 中存储十六进制值(例如:我试图插入字符串"prasad\r\nchowdary",但hbase它就像prasad\x0D\x0Achowdary)。

我的问题是当 hbase 中的数据是这样时,当我尝试从 hive 查询此表时,我的 jdbc 结果集对单行重复了两次。

那么如何避免它\r\n在插入hbase时转换为十六进制。

4

2 回答 2

0

如果要在字符串中添加换行符或任何其他字符集,请修改它们,以便 java 将它们视为字符串。

将“prasad\r\nchodary”转换为“prasad\r\nchodary”

那只是在换行之前使用转义字符“\”然后将其转换为字节。它应该看起来像。

String name = "prasad\\r\\nchowdary";
put.add(Bytes.toBytes("family"),Bytes.toBytes("qualifier"),Bytes.toBytes("name"));
于 2015-09-21T07:52:11.873 回答
0
String str = "prasad\r\nchowdary";

str = StringEscapeUtils.escapeJava(str);

Put p = new Put(Bytes.toBytes(str));

JSONObject json = new JSONObject(p.toJSON());

System.out.println(StringEscapeUtils.unescapeJava(json.getString("row")));
于 2015-09-22T10:39:57.020 回答