Hive通过JDBC存储二进制类型数据时候报 Method Not Supported
Hive的jdbc包不支持直接prepareStatement直接setObject、setBytes、setByte、setBlob去存储二进制数据.
通过setBinaryStream输入流的方法:
首先把二进制数组转成输入流:
InputStream input = new ByteArrayInputStream((byte[]) obj);
再通过setBinaryStream()将二进制的输入流存储到数据库中
之后jdbc读取数据的时候再通过输入流读取再通过输出流转成byte[]
InputStream inStream = rs.getBinaryStream(columnName);
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
byte[] buff = new byte[100]; //存放循环读取的临时数据