0

ハイブにリモート mysql メタストアを使用しています。ハイブクライアントを実行すると、完璧に動作します。しかし、spark-shell または spark-submit を介して spark-sql を使用しようとすると、ハイブに接続できません。& 次のエラーを取得:

    Caused by: javax.jdo.JDOFatalInternalException: Error creating transactional connection factory
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.EmbeddedDriver

メタストアに mysql データベースを使用しているときに、spark が derby データベースに接続しようとする理由がわかりません。

私はApache Sparkバージョン1.3とClouderaバージョンCDH 5.4.8を使用しています

4

1 に答える 1

0

Spark はデフォルトのハイブ設定を使用しているようです。次の手順に従ってください。

  • hive-site.xml のソフトリンクを SPARK_HOME/conf フォルダーにコピーまたは作成します。
  • SPARK_HOME/conf/spark-env.sh のクラスパスにハイブ ライブラリ パスを追加します。
  • すべてを有効にするために、Spark クラスターを再起動します。

あなたの hive-site.xml には MYSQL メタストアの場所があると思いますか? そうでない場合は、次の手順に従って、spark-shell を再起動します。

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://MYSQL_HOST:3306/hive_{version}</value>
    <description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore/description>
</property>
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>XXXXXXXX</value>
    <description>Username to use against metastore database/description>
</property> 
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>XXXXXXXX</value>
    <description>Password to use against metastore database/description>
</property>
于 2016-06-30T15:22:18.877 に答える