我目前正在使用 HDFS、Apache Livy 和 Django,其目的是发送一个请求以运行一些存储在 HDFS 中并调用 Livy 来创建批次的代码。现在,一切正常,我在 HDFS 中存储了一个基本的字数,带有一个 .txt 文件,在一个 htlm 页面上,我只需单击一个简单的按钮即可启动整个过程。
我成功创建了 wordcount 结果,我的下一步是从 Livy 获取信息,例如当前正在启动/运行/死/成功的会话(或批次)的 ID 某种回调,但我需要它自己实现,这样我就可以知道每个会话处于什么状态。为此,我认为我可以使用 Django-cron,因此我无法正确设置它。我没有错误,但没有更多的事情发生。我错过了什么?
目前在 Centos7 上工作,但我在 Python 3.6 中使用 Conda 环境,使用 Django 最新版本,还有 livy 和 HDFS(最新版本)
这是我当前的文件:
livy.html
{% load static %}
<html>
<body>
<div id="div1">
{{result.sessions}}
</div>
<form action="#" method="get">
<input type="text" name="mytextbox" />
<input type="submit" class="btn" value="Click" name="mybtn">
</form>
</body>
</html>
视图.py
from django.shortcuts import render
from django.http import HttpResponse
from django_cron import CronJobBase, Schedule
import wordcount, livy
# Create your views here.
class CheckIdCronJob(CronJobBase):
RUN_EVERY_MINS = 1 # every minute
schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
code = 'button.CheckIdCronJob' # a unique code
def index(request):
if(request.GET.get('mybtn')):
r = livy.send(request.GET.get('mytextbox')) #(/test/LICENSE.txt)
return render(request,'button/livy.html', {'result':r})
return render(request,'button/livy.html')
livy.py
import json, pprint, requests, textwrap
def send(inputText):
host = 'http://localhost:8998'
data = {"file":"/myapp/wordcount.py", "args":[inputText,"2"]}
headers = {'Content-Type': 'application/json'}
r = requests.post(host + '/batches', data=json.dumps(data), headers=headers)
r = requests.get(host + '/batches' + '', data=json.dumps(data), headers=headers)
return r.json()