我写了一个简单的Flask应用程序来将一些数据传递给Spark.该脚本适用于IPython Notebook,但是当我尝试在它自己的服务器中运行它时.我不认为Spark上下文在脚本中运行.如何在以下示例中使用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)
Run Code Online (Sandbox Code Playgroud)
在IPython Notebook中我没有定义SparkContext它,因为它是自动配置的.我不记得我是怎么做到的,我跟着一些博客.
在Linux服务器上,我已将.py设置为始终运行,并按照本指南的第5步安装最新的Spark .
编辑:
根据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)
Run Code Online (Sandbox Code Playgroud)
这将返回"成功导入的Spark模块".但是,我创建的下一个.py文件返回一个异常:
from pyspark import SparkContext …Run Code Online (Sandbox Code Playgroud) 我一直在使用 Facebook 的 Prophet,到目前为止它已经产生了一些很好的结果。
查看文档和谷歌搜索后,似乎没有一种自动方法可以从模型中提取季节性趋势作为数据框或字典,例如:
weekly_trends = { 1 : monday_trend, 2 : tuesday_trend, ... , 7 : sunday_trend }
yearly_trends = { 1 : day_1_trend, 2 : day_2_trend, ... , 365 : day_365_trend }
Run Code Online (Sandbox Code Playgroud)
目前我可以使用更手动的方式提取这些,但只是想知道我是否错过了更优雅的东西?