如何使用hive jdbc

时间:2017-02-15 09:03:34

标签: java hadoop jdbc hive binary-data

我想从hive二进制字段加载和显示图像,该字段从SQL Server Image字段存储为二进制文件。

我尝试了几种解决方法,如下所示

  1. 从hive jdbc结果集中提取二进制数据为字符串:

    查询:select image from table_4 where imageId=12;

    String image=res.getString(1);
    byte[] imageBytes=image.getBytes("UTF-8");
    ....
    

    写入输出流并保存为一些jpg图像。 但由于文件格式不受支持,无法显示图像。

  2. 从hive jdbc结果集中提取二进制数据作为字节数组:

    查询:select image from table_4 where imageId=12;

    byte[] imageBytes=res.getBytes(1);
    .....
    

    以不支持的方式获取异常,HiveResulSet.getBytes。

  3. 从hive jdbc结果集中提取二进制数据为Blob:

    查询:select image from table_4 where imageId=12;

    Blob imageBlob=res.getBlob(1);
    .....
    

    以不支持的方式获取异常,HiveResulSet.getBlob。

  4. 从hive jdbc结果集中提取二进制数据作为InputStream,即BinaryStream:

    查询:select image from table_4 where imageId=12;

    InputStream imageStream=res.getBinaryStream(1);
    byte[] imageBytes=IOUtils.toByteArray(is);
    ....
    

    写入输出流并保存为一些jpg图像。 但由于文件格式不受支持,无法显示图像。

  5. 注意:图像在配置单元中是二进制类型。我们在java jdbc中没有任何这种类型的二进制类型。这就是为什么我试图将该二进制文件访问到字符串/字节数组/输入流......等等

    请帮助我如何使用hive jdbc访问hive二进制数据并将其显示为图像。如果我的做法是正确的,那么请帮助我使用不同的编码方式,以便能够以支持的文件格式显示图像内容。

0 个答案:

没有答案