我想从hive二进制字段加载和显示图像,该字段从SQL Server Image字段存储为二进制文件。
我尝试了几种解决方法,如下所示
从hive jdbc结果集中提取二进制数据为字符串:
查询:select image from table_4 where imageId=12;
String image=res.getString(1);
byte[] imageBytes=image.getBytes("UTF-8");
....
写入输出流并保存为一些jpg图像。 但由于文件格式不受支持,无法显示图像。
从hive jdbc结果集中提取二进制数据作为字节数组:
查询:select image from table_4 where imageId=12;
byte[] imageBytes=res.getBytes(1);
.....
以不支持的方式获取异常,HiveResulSet.getBytes。
从hive jdbc结果集中提取二进制数据为Blob:
查询:select image from table_4 where imageId=12;
Blob imageBlob=res.getBlob(1);
.....
以不支持的方式获取异常,HiveResulSet.getBlob。
从hive jdbc结果集中提取二进制数据作为InputStream,即BinaryStream:
查询:select image from table_4 where imageId=12;
InputStream imageStream=res.getBinaryStream(1);
byte[] imageBytes=IOUtils.toByteArray(is);
....
写入输出流并保存为一些jpg图像。 但由于文件格式不受支持,无法显示图像。
注意:图像在配置单元中是二进制类型。我们在java jdbc中没有任何这种类型的二进制类型。这就是为什么我试图将该二进制文件访问到字符串/字节数组/输入流......等等
请帮助我如何使用hive jdbc访问hive二进制数据并将其显示为图像。如果我的做法是正确的,那么请帮助我使用不同的编码方式,以便能够以支持的文件格式显示图像内容。