我寫了一個簡單的Flask應用程序將一些數據傳遞給Spark。該腳本在IPython Notebook中工作,但不是當我嘗試在它自己的服務器中運行它時。我不認爲Spark上下文在腳本中運行。在下面的例子中,我如何獲得Spark?從Flask訪問Spark應用程序
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 Notebook中,我沒有定義SparkContext
,因爲它是自動配置的。我不記得我是如何做到這一點的,我跟着一些博客。
在Linux服務器上,我已經將.py設置爲始終運行並安裝最新的Spark,跟隨到this guide的第5步。
編輯:
繼davidism建議我現在已經不是訴諸簡單的程序與日益複雜本地化錯誤。
首先我創建的.py與剛剛從下面的答案腳本(後適當調整鏈接):
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文件我做了回報異常:
from pyspark import SparkContext
sc = SparkContext('local')
rdd = sc.parallelize([0])
print rdd.count()
這將返回例外:
搜索周圍類似的問題「的Java網關進程發送驅動其端口號之前退出」我發現this page,但是當我運行這段代碼時,沒有任何反應,控制檯上沒有打印,也沒有錯誤消息。同樣,this也沒有幫助,我得到了與上面相同的Java網關異常。我也安裝了anaconda,因爲我聽說這可能有助於聯合python和java,再次沒有成功......
任何有關下一步嘗試的建議?我很茫然。
注意,我用的Firefox的擴展RESTClient實現我的機器有IPython的筆記本上公佈它的工作如預期 – Matt
什麼是不工作?有錯誤嗎?你如何發佈數據?你如何運行服務器?你在調試模式下運行嗎?請[edit]包含[mcve]。 – davidism
我編輯了問題 – Matt