关于压缩后字符串写入clickhouse再读取后无法反解压的问题
Posted 天涯泪小武
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于压缩后字符串写入clickhouse再读取后无法反解压的问题相关的知识,希望对你有一定的参考价值。
我们将一个长字符串进行了压缩,采用zstd或者snappy之类的,将字符串压成了byte[],然后将byte[]作为一个属性写入了clickhouse数据库,clickhouse会默认将byte[]转为String进行存储。
但是当从数据库读取到该字段,得到一个String类型的值,再用getBytes()方法获取到byte[],再试图用zstd的反解压功能对该byte[]试图还原为压缩前的字符串时,会发现报错,已经无法解压还原了。
对应该图的情形,运行会报错
那么做了如下修改,设置编码方式后,即可
String encode = "ISO8859-1";
String s = "FilterRegistrationBean registration = new FilterRegistrationBean();";
byte[] bytes = ZstdUtils.compress(s.getBytes(encode));
String ss = new String(bytes, encode);
byte[] sss = ZstdUtils.decompressBytes(ss.getBytes(encode));
System.out.println(new String(sss));
以上是关于关于压缩后字符串写入clickhouse再读取后无法反解压的问题的主要内容,如果未能解决你的问题,请参考以下文章
关于压缩后字符串写入clickhouse再读取后无法反解压的问题
关于压缩后字符串写入clickhouse再读取后无法反解压的问题