HBase写入数据后再拿出来乱码求救
写数据:put.addColumn("ability".getBytes(), "ability".getBytes(), Bytes.toBytes(infos[1]));
读数据
Connection connection = HBaseConnectionUtil.getConnection();
Table table = connection.getTable(TableName.valueOf("jobs"));
ResultScanner scanner = table.getScanner(new Scan());
for(Result result:scanner){
byte[] row = result.getRow();
System.out.print("rowkey: "+new String(row));
List<Cell> cells = result.listCells();
for (Cell cell:cells){
byte[] familyArray = cell.getFamilyArray();
byte[] qualifierArray = cell.getQualifierArray();
byte[] valueArray = cell.getValueArray();
System.out.print(new String(familyArray,"utf-8")+" "+new String(qualifierArray,"utf-8")+" "+new String(valueArray));
}
System.out.println();
}
读出来的数据
rowkey: 000000000001 & 000000000001abilityabilityj�B�JAVA/hadoop/spark/es & 000000000001abilityabilityj�B�JAVA/hadoop/spark/es & 000000000001abilityabilityj�B�JAVA/hadoop/spark/es
不知道为什么,gbk、GB2312/UTF-8 都不行
写数据是从kafka 拉出来的,此时读到控制台也还正常
求解,感谢
读出来是指读到什么地方。
如果控制台是正常的,说明控制台的编码是正确的。
在什么环境中读取,说明当前环境编码需要设置下。
如果在shell中,则设置下shell编码
hyj 发表于 2019-5-13 16:44
读出来是指读到什么地方。
如果控制台是正常的,说明控制台的编码是正确的。
在什么环境中读取,说明当前 ...
读取在 IDEA 的 控制台 o13674976542 发表于 2019-5-13 16:48
读取在 IDEA 的 控制台
通过hbase shell去看下插入里面的数据是否有乱码
pig2 发表于 2019-5-13 18:31
通过hbase shell去看下插入里面的数据是否有乱码
不乱码,已解决,原因未知
乱码是因为直接使用Bytes.toString
解决方法是
Bytes.toString(CellUtil.cloneFamily(cell))
使用CellUtil
感谢回复
o13674976542 发表于 2019-5-13 19:02
不乱码,已解决,原因未知
乱码是因为直接使用Bytes.toString
解决方法是
使用Bytes.toString 应该就可以了
页:
[1]