Apache Zeppelin python 到 angular 绑定不会一直发生,解除绑定会出错

Apache Zeppelin python to angular binding does not happen all the time, unbinding gives error

我创建了一个带有倒数计时器的 angular 下载按钮作为更大的 Apache Zeppelin 笔记本的一部分(下面的 url 已针对此示例进行了更改)。倒计时完成后,该按钮将被禁用。我通过 z.angularBind() 绑定 python 变量,所以我的 angular 段落可以使用它们。这似乎与 back-end API calls 一致。但是,有时(并且不一致)绑定没有成功发生,因此按钮不显示,因为 timer 不存在。我已经通过在按钮下方显示绑定值来验证这一点,它们是空的,但只是有时。

这是我的三个连续飞艇笔记本段落:

%python
# z.angularUnbind("url")
bunny = 'https://positively.com/files/bunny-on-side.jpg'
z.angularBind("url", bunny)
%angular
<div>
    <a ng-if="timer>=0" ng-href="{{ url }}" class="btn btn-primary">Download a bunny image</a>
    <a ng-if="timer<0" ng-href="{{ url }}" class="btn btn-primary" disabled>Button Expired</a>
    <br>
    <em>Countdown: {{ timer }}</em>
</div>
<br>
Variables: {{ timer }}, {{ url }}
%python
import time
counter = 10
while counter >= 0:
    z.angularBind("timer", counter)
    time.sleep(1)
    counter -= 1
z.angularBind("timer", counter)

当我重新打开笔记本或导入然后首次 运行ning 时,同一笔记本的顺序重新 运行 可能会出现此问题。下图是 运行 之后 Zeppelin 中的问题。任何建议表示赞赏,谢谢!

这是正确 运行 时它应该一直看起来的样子:

其次是:

我试图在第一个 python 段的开头 z.angularUnbind() 我的变量,以防变量在某处发生冲突(已注释掉),但得到了以下错误,几乎看起来像 angularUnbind() 期待前端 API,让我特别困惑。将段落 ID 作为第二个参数没有解决错误消息。

Py4JError: An error occurred while calling o0.angularUnbind. Trace:
py4j.Py4JException: Method angularUnbind([class java.lang.String, class java.lang.String]) does not exist
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326)
    at py4j.Gateway.invoke(Gateway.java:274)
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
    at py4j.commands.CallCommand.execute(CallCommand.java:79)
    at py4j.GatewayConnection.run(GatewayConnection.java:238)
    at java.lang.Thread.run(Thread.java:748)
%python
z.z.angularUnbind("url")
bunny = 'https://positively.com/files/bunny-on-side.jpg'
z.z.angularBind("url", bunny)

应该可以,对 python 代码进行上述更改。

通过ZeppelinContext,可以绑定/解除绑定变量到AngularJS视图。目前,它仅适用于 Spark Interpreter ( scala ).