我有一個用於連接到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交談 –