2016-07-14 5 views
2

内からスクリプトを実行します。しかし、どのように私はpysparkシェル内からscript.pyを実行していますか?これは基本的な質問のようですが、私はどこでも答えを見つけることができません。私はは私が</p> <pre><code>pyspark script.py </code></pre> <p>を入力して、UNIXのコマンドラインからの私のpython + pysparkスクリプトを実行することができますpysparkシェル

execfile('script.py') 

を試してみました。しかし、私は、エラーを取得する:

ValueError: Cannot run multiple SparkContexts at once 
+0

'subprocess.call'(https://docs.python.org/3/library/subprocess.html#subprocess.call)を試してください。私の理解では、 'execfile'は同じPythonインスタンス内のファイルを評価しようとしますが、' subprocess'モジュールではPythonとPySparkの別のインスタンスを生成できます。 – KartikKannapur

+0

チップをありがとうございます。コードを実行可能にしてchmodを追加した後、私はこの方法でコードを実行することができます。しかし、実行後、私はコード内の変数にアクセスすることはできません。したがって、UNIXで 'pyspark script.py'を実行するのとほぼ同じです。 – user3433489

+0

はい、別の変数にパイプを張ったり、何らかのデータ構造で永続化したりしない限り、変数にアクセスすることはできません。 'サブプロセス'はあなたが別のスパークプログラムを呼び出すのに役立ちます。 'subprocess.Popen'に' stdout = PIPE'と似たものを試すことができます – KartikKannapur

答えて

5

エラーが新しいSparkContext変数を作成しようとしscript.pyから来るのだろうか?あなたはpysparkインタラクティブクライアントを起動すると

それは通常言う: SparkContext available as sc, HiveContext available as sqlContext.

スクリプトファイルがsc = SparkContext()が含まれている場合は、多分それをコメントしてみてください。

関連する問題

 関連する問題