- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我刚开始使用驱动org.apache.hive.jdbc.HiveDriver
(版本 1.2.1 for spark2) 与 Spark Thrift 服务器 (STS)(引用 here)
java.sql.ResultSet
定义方法 absolute()
(JavaDoc here )
但是HiveBaseResultSet
似乎选择了不实现该方法(源码here)
现在我的应用程序(构建在 SmartGWT
之上)正在执行一个简单的操作,我收到以下错误消息:
=== 2017-05-13 18:06:16,980 [3-47] WARN RequestContext - dsRequest.execute() failed:
java.sql.SQLException: Method not supported
at org.apache.hive.jdbc.HiveBaseResultSet.absolute(HiveBaseResultSet.java:70)
at org.apache.commons.dbcp.DelegatingResultSet.absolute(DelegatingResultSet.java:373)
at com.isomorphic.sql.SQLDataSource.executeWindowedSelect(SQLDataSource.java:2970)
at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:2024)
驱动程序选择不执行 absolute()
的原因是什么?
是否有解决该限制的方法?
最佳答案
感谢 Mark Rotteveel 的提示。现在我理解得更好了,让我发布一个我自己的问题的答案。
absolute() 的实现是可选的
正如 ResultSet#absolute()
的接口(interface) ( link ) 所指定的,absolute()
的实现是可选的——尤其是当结果集类型是 TYPE_FORWARD_ONLY
。
解决方法
在我的例子中,结果集来自 Spark Thrift 服务器 (STS),所以我猜它确实是只向前的。所以问题变成了如何指示我的应用程序不调用 absolute()
,这基本上是为了光标移动。
SmartGWT 特定的答案
对于 SmartGWT
,这是由一个名为 sqlPaging
的属性控制的,我们可以为 OperationBinding
指定该属性。使用的正确值似乎是 dropAtServer
(更多引用 here)。所以我将我的 SmartGWT 数据源 XML 文件设置为类似这样的内容
<operationBindings>
<operationBinding operationType="fetch" progressiveLoading="false"
sqlPaging="dropAtServer"
>
之后我看到另一个错误,现在与 HiveConnection#commit()
相关:
java.sql.SQLException: Method not supported
at org.apache.hive.jdbc.HiveConnection.commit(HiveConnection.java:742)
at org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:334)
at com.isomorphic.sql.SQLTransaction.commitTransaction(SQLTransaction.java:307)
at com.isomorphic.sql.SQLDataSource.commit(SQLDataSource.java:4673)
经过更多挖掘,我意识到 SmartGWT 控制提交行为的正确属性是 autoJoinTransactions
,我应该将其设置为 false(更多引用 here)。在这两个更改之后,我可以通过 jdbc.HiveDriver
对于同样尝试此操作的任何人,这是我在 SmartGWT 的 server.properties
中对驱动程序的完整设置(更多引用 here)
sql.defaultDatabase: perf2 # this name is picked by me, but it can be anyname
sql.perf2.driver.networkProtocol: tcp
sql.perf2.driver: org.apache.hive.jdbc.HiveDriver # important
sql.perf2.database.type: generic # important
sql.perf2.autoJoinTransactions: false # important
sql.perf2.interface.type: driverManager # important
sql.perf2.driver.url: jdbc:hive2://host:port # important -- pick your host:port
sql.perf2.driver.user: someuser # important -- pick your username
sql.perf2.interface.credentialsInURL: true
sql.perf2.driver.databaseName: someDb
sql.perf2.driver.context:
关于hadoop - org.apache.hive.jdbc.HiveDriver : HiveBaseResultSet has not implemented absolute()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43958596/
我创建了一个带有依赖项的 Maven 项目 org.apache.hadoop hadoop-core 1.2.1 我面临以下异常 private static Strin
我正在尝试使用 hivejdbc 驱动程序从我的本地计算机访问配置单元。但我面临问题。我正在使用下面的代码。 不确定如何将 jar 添加到 python。 import jaydebeapi url
我是 Java 的新手。我正在尝试通过 java 连接到配置单元服务器并使用来自 https://cwiki.apache.org/confluence/display/Hive/HiveServer
问题: try{ Class.forName("org.apache.hive.jdbc.HiveDriver"); catch(ClassNotFoundException e){ e.
我刚开始使用驱动org.apache.hive.jdbc.HiveDriver(版本 1.2.1 for spark2) 与 Spark Thrift 服务器 (STS)(引用 here) java.
当我尝试在IDEA中运行代码时,没有出现此错误,但是在打包并尝试使用 java -cp app.jar com.hive.connect.controller.RecordController 我得到
我还添加了 usr/local/share/hadoop/mapreduce/*jars、usr/local/hadoop/common、hive-exec-xxx.jar、hive-metastor
我有一个可部署的 Maven 项目,我正在尝试使用 JDBC 连接到 Hive 服务器。这是我的 pom 文件: org.apache.hive
我尝试通过我的 spring 应用程序连接 hive。我已经使用 MYSQL 服务器配置了 hive。我使用了以下属性进行数据库配置。 db.dialect=org.hibernate.dialect
我是一名优秀的程序员,十分优秀!