2017-10-13 12 views
0

私はMySQLへの接続に使用するアプリを持っている、と私はこのようにそれのためにHibernate設定 を持っている:私は代わりにHive/SparkSQLに接続したい場合は、何がこれらのプロパティの 同等の値でしょう今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> 
     ... 

あれ?

私は(我々はポート10000を使用していると仮定)driver_classurl上のいくつかのアイデアを持っているが、dialectは何をすべきですか?

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

更新

私は多くの異なる値を試みたが、それらのどれも動作しません。 (私はちょうど試行錯誤をしていた ので、ここでは、Apache Hiveのインストールが使用するメタストア何かを見つけるために は至っていない)

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の) dialectnullによる にあると決定された変数ライン138を実行しようとしたときにキャッチされた例外:

metaReportsDDLCausesTxnCommit = meta.dataDefinitionCausesTransactionCommit(); 

例外で

(上記の警告メッセージの原因となった)
java.sql.SQLException: Method not supported 

ん私はを使用することはできませんを意味していますApache Hiveを使用した? これが当てはまる場合は、それになります。 (私はこの部分のHibernate実装を交換するために を持っていると思います) しかし、私は正式な答え を知りたいのです。

インターネットでは、 人がApache HiveでHibernateを正常に使用しているという強力な証拠を見つけることができませんでした。

+1

Hastメタストア(SparkSQLなど)のみを気にする場合は、メタストアが使用する内容に応じてMysql、Oracle10、Derby、またはPostgresの方言を使用できます。 –

+0

@ cricket_007 - ありがとう!メタストアが使用するものをどのように知ることができますか? (これはあまりにも無知に聞こえる場合は申し訳ありません - このデータレイクは他の誰かによって設定されています。)実行できるコマンドはありますか?または私が見上げることができるファイル? – leeyuiwah

+1

通常、私はhive-site.xmlファイルと 'jdo'を含むいくつかのプロパティを見つけようとします。 SparkSQLがHiveServer2との会話にJDBCを使用していないということを私はあなたが必要としていることを示唆しているわけではありません。 –

答えて

-1

ここに私自身の質問に答えています。

私は答えは "いいえ - HibernateのためのHive/SparkSQL用の方言はありません"と思います。明らかに、HibernateのHiveServer2(つまり、Hive Metastoreはサポートしていません)はサポートされていません。私はこれが現実(95%信頼)であると信じています(2017-10-19)。

私の場合、私のコードを書き換えて、代わりにJDBCコードをダイレクトするためにHibernateコードを置き換えました。私はHibernateのコードが単純なDBクエリ(session.createSQLQuery())でORMが重大ではなかったので運が良かったので、変更は比較的簡単でした。

関連する問題