Ho scritto una semplice app Flask per passare alcuni dati a Spark. Lo script funziona in IPython Notebook, ma non quando provo ad eseguirlo nel proprio server. Non penso che il contesto Spark sia in esecuzione all'interno della sceneggiatura. Come posso far funzionare Spark nel seguente esempio?Accesso a Spark dall'app 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)
In IPython Notebook non mi definisco il SparkContext
perché viene configurato automaticamente. Non ricordo come ho fatto questo, ho seguito alcuni blog.
Sul server Linux ho impostato il file .py per essere sempre in esecuzione e installato l'ultimo Spark seguendo il passaggio 5 di this guide.
Edit:
Seguendo il consiglio davidism Ora ho invece fatto ricorso a programmi semplici con complessità crescente di localizzare l'errore.
In primo luogo ho creato .py con appena lo script dalla risposta qui sotto (dopo aver regolato in modo appropriato i link):
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)
Ciò restituisce "Moduli Spark importati con successo". Tuttavia, il file .py dopo ho fatto restituisce un'eccezione:
from pyspark import SparkContext
sc = SparkContext('local')
rdd = sc.parallelize([0])
print rdd.count()
Ciò restituisce un'eccezione:
"processo di gateway di Java è uscito prima di inviare il conducente suo numero di porta"
ricerca in giro per problemi simili Ho trovato this page ma quando eseguo questo codice non succede niente, nessuna stampa sulla console e nessun messaggio di errore. Allo stesso modo, this non ha aiutato nessuno, ottengo la stessa eccezione del gateway Java come sopra. Ho anche installato anaconda come ho sentito questo potrebbe aiutare a unire Python e Java, ancora nessun successo ...
Qualche suggerimento su cosa provare dopo? Sono in perdita.
nota che ho postato sulla mia macchina con ipython notebook utilizzando l'estensione restclient su Firefox e ha funzionato come previsto – Matt
ciò che non funziona? C'è un errore? Come stai postando i dati? Come stai facendo funzionare il server? Stai correndo in modalità di debug? Si prega di [modificare] per includere un [mcve]. – davidism
Ho modificato la domanda – Matt