冬眠蜂巢/ SparkSQL方言?(Hibernate dialect for Hive/Spark

2019-09-30 17:24发布

我有一个用于连接到一个应用程序MySQL ,我有Hibernate配置它是这样的:

<hibernate-configuration>
   <session-factory>
       <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
       <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
       <property name="hibernate.connection.url">jdbc:mysql://somehost:3306/some_db</property>
       ...

现在,如果我想连接到Hive/SparkSQL相反,你会为这些属性中的等效值是什么?

我有一些想法driver_classurl (假设我们使用端口10000 ),但什么都要的dialect是什么?

<property name="hibernate.connection.driver_class">org.apache.hive.jdbc.HiveDriver</property>
<property name="hibernate.connection.url">jdbc:hive2://someHost:10000</property>

更新

我尝试了许多不同的值,但他们没有工作。 (我还没有发现什么metastore了Apache蜂巢安装使用,所以在这里我只是做尝试和错误)

org.hibernate.dialect.MySQLDialect
org.hibernate.dialect.MySQLInnoDBDialect
org.hibernate.dialect.DerbyDialect
org.hibernate.dialect.DerbyTenFiveDialect
org.hibernate.dialect.Oracle10gDialect
org.hibernate.dialect.H2Dialect
org.hibernate.dialect.Dialect

我注意到,在所有的情况下,有从休眠提到的警告:

WARN JdbcServicesImpl,main:160 - \
  HHH000341: Could not obtain connection metadata : \
  Method not supported

然后代码将运行到一个NullPointerException
org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure() (207线在4.2.0.Final)。

我下载的Hibernate的源代码和跟踪的逻辑。 唯一的例外是造成的,因为前面几行的变量dialect (类型的Dialect )被确定为null由于试图执行138线时捕获的异常:

metaReportsDDLCausesTxnCommit = meta.dataDefinitionCausesTransactionCommit();

唯一的例外是

java.sql.SQLException: Method not supported

(导致上述警告消息)

这是否意味着我不能使用Hibernate与Apache蜂巢? 如果是这样的话,那就这样吧。 (我猜我会换出Hibernate实现这部分),但我很好奇地想知道这个权威的答案。

在互联网上我找不到有力的证据,人们一直在使用Hibernate成功与Apache蜂巢。

Answer 1:

我在这里回答我的问题。

我认为答案是“否 - 存在对蜂巢/ SparkSQL没有方言”为休眠。 显然有对HiveServer2(即不蜂房Metastore)在Hibernate中不支持。 我相信这是真实的(95%)截至目前(二○一七年十月一十九日)。

就我而言,我结束了我重写代码,并更换Hibernate代码直接JDBC代码来代替。 我很幸运的是,Hibernate代码只是有简单的数据库查询( session.createSQLQuery()不严重ORM,所以变化是比较容易的。



文章来源: Hibernate dialect for Hive/SparkSQL?