1
我尝试用火花在这里学到 https://www.codementor.io/jadianes/building-a-web-service-with-apache-spark-flask-example-app-part2-du1083854类型错误:“dict_keyiterator”对象未标化的
本教程中,烧瓶我尝试使用卷曲发送文件user_ratings.file在Win 10使用CMD与这行代码
curl --data-binary @user_ratings.file http://127.0.0.1:5432/0/ratings
文件没有格式仅此数据
260,9 1,8 16,7 25,8 32,9 335,4 379,3 296,7 50,8 858,10
那个帖子是
@main.route("/<int:user_id>/ratings", methods=["POST"])
def add_ratings(user_id):
# get the ratings from the Flask POST request object
ratings_list = request.form.keys()[0].strip().split("\n")
ratings_list = map(lambda x: x.split(","), ratings_list)
# create a list with the format required by the negine (user_id, movie_id, rating)
ratings = map(lambda x: (user_id, int(x[0]), float(x[1])), ratings_list)
# add them to the model using then engine API
recommendation_engine.add_ratings(ratings)
return json.dumps(ratings)
但不发送任何薄的CSV文件 火花消息错误是
File "C:\Users\ibrahim\Desktop\RSS\app.py", line 33, in add_ratings
ratings_list = request.form.keys()[0].strip().split("\n")
TypeError: 'dict_keyiterator' object is not subscriptable
127.0.0.1 - - [26/Sep/2017:23:46:48 +0200] "POST /0/ratings HTTP/1.1" 500 291 "-" "curl/7.55.1"
我看来这条线的功能
ratings_list = request.form.keys()[0].strip().split("\n")
在功能教程它发布数据到csv文件 任何帮助,谢谢所有
注:如果表单可能有钥匙的数量巨大(所以'list'ifying将作出一个巨大的临时'列表',只放弃除第一项之外的所有内容),您可以通过替换'list(request.form.keys())[0]'(不需要'.keys()'无论如何; 'dict's已经是它们的键的迭代)'next(iter(request.form))';这会让懒惰的迭代器从第一个项目中抽取第一个项目,然后忽略其余部分,而根本不涉及临时的“list”。坦率地说,即使'request.form'很小,我也会使用后一种形式,因为它是一个更直接的解决方案。 – ShadowRanger