Sparkにデータを渡すための簡単なFlaskアプリを作成しました。このスクリプトはIPython Notebookで動作しますが、自分のサーバで実行しようとしたときは動作しません。 Sparkコンテキストがスクリプト内で実行されているとは思わない。次の例でSparkを動作させるにはどうすればよいですか?Flaskアプリからのスパークへのアクセス
from flask import Flask, request
from pyspark import SparkConf, SparkContext
app = Flask(__name__)
conf = SparkConf()
conf.setMaster("local")
conf.setAppName("SparkContext1")
conf.set("spark.executor.memory", "1g")
sc = SparkContext(conf=conf)
@app.route('/accessFunction', methods=['POST'])
def toyFunction():
posted_data = sc.parallelize([request.get_data()])
return str(posted_data.collect()[0])
if __name__ == '__main_':
app.run(port=8080)
IPythonノートブックでは、SparkContext
は自動的に設定されるため定義しません。私はこれをどうやってやったのか覚えていない、私はいくつかのブログに続いた。
Linuxサーバーでは、常に実行するように.pyを設定し、this guideの手順5までを実行して最新のSparkをインストールしました。
編集:
私は今、代わりにエラーをローカライズするために複雑さを増すと、単純なプログラムに頼ってきたdavidismによって助言に続き。これは、「成功しまし輸入スパークモジュール」を返し
import sys
try:
sys.path.append("your/spark/home/python")
from pyspark import context
print ("Successfully imported Spark Modules")
except ImportError as e:
print ("Can not import Spark Modules", e)
:
は、まず私が(適切なリンクを調整した後に)以下の答えからちょうどスクリプトでの.py作成しました。ただし、次の.pyファイルは、私は戻って、例外を作っ:
from pyspark import SparkContext
sc = SparkContext('local')
rdd = sc.parallelize([0])
print rdd.count()
は、これは例外を返します:
は、同様の問題のために周りに検索
を「Javaのゲートウェイ・プロセスは、ドライバーにそのポート番号を送信する前に終了しました」私はthis pageを見つけましたが、このコードを実行しても何も起こらず、コンソールには何も表示されず、エラーメッセージも表示されません。同様に、thisも役に立ちませんでしたが、上記と同じJavaゲートウェイ例外が発生します。私はこれがpythonとjavaを結合するのに役立つかもしれないと聞いたので、私はまたanacondaをインストールしました...
次に何を試してみるべきですか?私は迷っている。
ノート、それが動作していない何を期待 – Matt
として働いていましたか?エラーはありますか?どのようにデータを投稿していますか?どのようにサーバーを稼働させていますか?デバッグモードで実行していますか? [編集]に[mcve]を含めるようにしてください。 – davidism
私は質問を編集しました – Matt