4

有一个用于 hive 的 jdbc 驱动程序,但似乎没有完全运行。我使用默认的 doobie Transactor 连接到它,就像

val xa = Transactor.fromDriverManager[IO](
  "org.apache.hive.jdbc.HiveDriver", url, username, pass
)

myQuery.transact(xa).unsafeRunSync

我收到一条错误消息

[错误] 线程“主”java.sql.SQLFeatureNotSupportedException 中的异常:org.apache.hive.jdbc.HiveConnection.rollback(HiveConnection.java:1327) 不支持方法 [错误] doobie.free.KleisliInterpreter$ ConnectionInterpreter$$anonfun$rollback$1.apply(kleisliinterpreter.scala:643) [错误] 在 doobie.free.KleisliInterpreter$ConnectionInterpreter$$anonfun$rollback$1.apply(kleisliinterpreter.scala:643) [错误] 在 doobie.free。 KleisliInterpreter$$anonfun$primitive$1$$anonfun$apply$1.apply(kleisliinterpreter.scala:99)

如何使用 Doobie 连接到 Hive?

4

1 回答 1

5

您需要通过新策略禁用 Transactor 中的“after”和“oops”。这是如何

    import doobie.free.connection.unit
    import doobie.util.transactor.Strategy

    val hiveStrategy = Strategy.default.copy(
                        after = unit, oops = unit)

    val xa = Transactor.strategy.set(
               Transactor.fromDriverManager[IO](
                 "org.apache.hive.jdbc.HiveDriver", url, username, pass), 
               hiveStrategy)

    myQuery.transact(xa).unsafeRunSync
于 2018-10-12T16:01:14.427 回答