2017-02-06 15 views
2

私はJupyter NotebookでSparkを使うのに便利なスクリプトを用意しています。これは、私が2番目のノートブックで(たとえば、いくつかのスクラッチ作業をテストするために)sparkコマンドを実行する場合を除いて、素晴らしいです。Spark 2.0の複数インスタンスを一度に(複数のJupyterノートブックで)実行するにはどうすればよいですか?

私は非常に長いエラーメッセージにあるように思われたのキーパーツを入手:

Py4JJavaError: An error occurred while calling o31.json. : java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient`

. . .

Caused by: ERROR XSDB6: Another instance of Derby may have already booted the database /metastore_db

問題は、私は一度にスパークの1つのインスタンスを実行できるということのようです。

複数のノートブックで一度に実行するようにSparkを設定するにはどうすればよいですか?

答えて

1

デフォルトでは、SparkはHiveとHadoopの上で動作し、軽量データベースシステムであるDerbyにデータベース変換のための命令を保存します。 Derbyは一度に1つのSparkインスタンスしか実行できないため、2番目のノートブックを起動してSparkコマンドを実行するとクラッシュします。

これを回避するには、SparkのHiveインストールをDerbyではなくPostgresに接続します。

Brew install postgres、まだインストールされていない場合。

はその後 postgresql-9.4.1212.jar あなたのスパークをインストールするための移動 /libexec/jars/ディレクトリにこの.jarファイルを

https://jdbc.postgresql.org/download.htmlから(あなたがjava8別名のJava 1.8を実行していると仮定)をダウンロード。

例:/usr/local/Cellar/apache-spark/2.0.1/

(スパークは、コマンドラインでbrew info apache-sparkを入力して、インストールされているMac上であなたが見つけることができる)

次はあなたのスパークインストール用/libexec/confディレクトリにハイブ-site.xmlのを作成します。

例:/usr/local/Cellar/apache-spark/2.0.1/libexec/conf

これは、テキストエディタを介して行うことができます - ちょうど「.xmlの」拡張子を持つファイルを保存します。しかし、次のステップに一致している必要があります - 「ハイブ」と「mypasswordという」はあなたに理にかなって何と交換することができる

<configuration> 
<property> 
    <name>javax.jdo.option.ConnectionURL</name> 
    <value>jdbc:postgresql://localhost:5432/hive_metastore</value> 
</property> 

<property> 
    <name>javax.jdo.option.ConnectionDriverName</name> 
    <value>org.postgresql.Driver</value> 
</property> 

<property> 
<name>javax.jdo.option.ConnectionUserName</name> 
    <value>hive</value> 
</property> 

<property> 
    <name>javax.jdo.option.ConnectionPassword</name> 
    <value>mypassword</value> 
</property> 

</configuration> 

ハイブ-site.xmlには、次のテキストが含まれている必要があります。

は、最後にはpostgressでユーザーとパスワードを作成します。コマンドラインで以下のコマンドを実行します - それは、あなたが行われている

psql 
CREATE USER hive; 
ALTER ROLE hive WITH PASSWORD 'mypassword'; 
CREATE DATABASE hive_metastore; 
GRANT ALL PRIVILEGES ON DATABASE hive_metastore TO hive; 
\q 

ザッツを。 Sparkは複数のJupyterノートブックで同時に動作するはずです。

関連する問題