java - Java Hive 连接 executeUpdate() 始终返回计数为零
问题描述
设想
我正在尝试通过 zookeepers 集群从本地笔记本电脑连接到 Hive 表到远程开发服务器,并尝试更新表列值。Hadoop 集群和 Hive 表也位于远程开发环境中。我正在使用 hive-jdbc.jar 版本 2.1.0 和 hadoop-common 版本 2.7.1
问题
面临更新表记录但 stmt.getUpdateCount() 和 stmt.executeUpdate 分别返回 -1 和 0 的问题。代码:有什么遗漏吗?或在 Hive 表 getUpdateCount() 行为不同?感谢任何快速帮助..
代码:
private static String driverName = "org.apache.hive.jdbc.HiveDriver";
public static void main(String[] args) throws SQLException,
ClassNotFoundException {
Class.forName(driverName);
Connection con =
DriverManager.getConnection("jdbc:hive2://XXXX:XXXX/tibco,
XXXX:XXXX/tibco,XXXX:XXXX/tibco;
serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;
"hive.execution.engine=tez", "hive", "");
Statement stmt = con.createStatement();
con.setAutoCommit(true);
System.out.println("created");
ResultSet rs = stmt.executeQuery("select * from tibco.log_events_poc");
ResultSet db1=stmt.executeQuery("desc tibco.log_events_poc");
System.out.println("tibco.log_events_poc table -->"+db1);
int rowsupdated = stmt.executeUpdate("update tibco.log_events_poc set
name='sample1'");
System.out.println("Number of Rows updated"+stmt.getUpdateCount());
System.out.println("Number of Rows updated"+rowsupdated);
stmt.close();
con.close();
}
解决方案
您可以查看版本 2.1.0 的来源。驱动程序完全忽略任何更新计数并始终返回0
:
@Override
public int executeUpdate(String sql) throws SQLException {
execute(sql);
return 0;
}
推荐阅读
- node.js - 在移动请求上获取 axios 的问题
- r - 在R中绘制多条线,每条线都具有独特的颜色
- assembly - 为什么比较这两件事会得出不同的结果?
- javascript - 如何在渲染函数中使用 createElement 创建 Vuetity 徽章和图标
- javascript - 跨两个 div 的等高列
- docker - 将 www 重定向到非 www 在 Traefik 2 中不起作用
- google-coral - 如何在珊瑚开发板上使用自己的视频进行 edgetpu_demo?
- c# - 如何在单个查询中从 SQL 服务器获取日期并将其存储在 SQL 数据库中
- javascript - 为什么`checkInputlength`总是返回false?
- react-native - 如何使用导航参数设置状态?