我正在尝试使用 Hive 作为底层数据存储来运行 SQl 查询,该查询调用 Big Decimal 函数并引发以下错误:
不支持该方法
org.apache.hadoop.hive.jdbc.HivePreparedStatement.setBigDecimal(HivePreparedStatement.java:317)
这只是因为 Hive 不支持以下内容:
public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException {
// TODO Auto-generated method stub
throw new SQLException("Method not supported");
}
请建议可以使用其他解决方法或修复来解决此类问题
原始的 Hive JDBC 驱动程序仅支持少数 JDBC 接口,请参阅HIVE-48:支持 JDBC 连接以实现 Hive 和 RDBMS 之间的互操作性 https://issues.apache.org/jira/browse/HIVE-48。所以commit https://github.com/apache/hive/commit/b18a8b8ab2239d6f7792f6e90af80023d509602b为接口留下自动生成的“不支持”代码,例如CallableStatement http://docs.oracle.com/javase/7/docs/api/java/sql/CallableStatement.html or PreparedStatement http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html.
With HIVE-2158:根据当前 HIVE 支持的数据类型添加 HivePreparedStatement 实现 https://issues.apache.org/jira/browse/HIVE-2158一些方法得到了充实,请参阅commit https://github.com/apache/hive/commit/a9b5ec3570ffdfee52ae16f6182c562e01d1f082。但没有添加 Blob、AsciiStream、二进制流和...bigDecimal 等类型。当 HIVE-2158 得到解决时(2011-06-15 http://xkcd.com/1179/) Hive 中不支持 DECIMAL,它附带了HIVE-2693:添加 DECIMAL 数据类型 https://issues.apache.org/jira/browse/HIVE-2693,于2013年1月17日。添加对 DECIMAL 的支持后,看起来 JDBC 驱动程序接口未更新。
因此基本上 JDBC 驱动程序需要使用支持的新类型进行更新。您应该提交一份JIRA https://issues.apache.org/jira/为了这。解决方法:不要使用DECIMAL,或者不要使用PrepareStatement。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)