我有一个用于连接到MySQL
的应用程序,我有这方面Hibernate
配置 这样的:Hive/SparkSQL的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_class
和url
(假设我们使用的端口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
然后该代码将在org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure()
碰上NullPointerException
(在4.2.0.Final 207线)。
我下载了Hibernate的源代码并追踪了逻辑。 该异常被造成的,因为提前几行的可变 dialect
(的Dialect
型)被确定为null
由于 试图执行138线时捕获的异常:
metaReportsDDLCausesTxnCommit = meta.dataDefinitionCausesTransactionCommit();
唯一的例外是
java.sql.SQLException: Method not supported
(导致上面的警告消息)
这是否意味着我不能使用Hibernate
与Apache Hive? 如果是这样,那就这样吧。 (我想我会有 换出Hibernate
执行此部分) 但我很想知道关于此的权威答案 。
在互联网上我找不到有力证据表明 人已经成功使用Hibernate
与Apache Hive。
如果您只关心Hive metastore(如SparkSQL),则可以使用Mysql,Oracle10,Derby或Postgres方言,具体取决于您的metastore使用 –
@ cricket_007 - 谢谢!我如何知道Metastore使用的是什么? (对不起,如果这听起来太无知 - 这个数据湖是由其他人建立的。)有没有我可以运行的命令?或者我可以查找的文件? – leeyuiwah
通常,我会尝试找到hive-site.xml文件和一些包含'jdo'的属性。我并不是说这就是你需要的,只是SparkSQL不使用JDBC来与HiveServer2交谈 –