You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Zeppelin中Angular段落向PySpark段落传递变量的语法问题

问题分析

你在Angular段落中直接给Angular作用域赋值testvar,但该变量仅存在于Angular本地作用域中,未同步到Zeppelin的跨解释器共享上下文,导致PySpark段落通过z.get("testvar")读取时返回None。其他Angular段落能正常读取是因为它们共享同一个Angular作用域,而非通过Zeppelin上下文获取变量。

解决方案

修改Angular段落的代码,使用Zeppelin提供的angularBind方法将变量绑定到共享上下文,而非直接赋值给作用域:

<form id="main_form"></form>
<script>
$( document ).ready(function() {
    const angFormScope = angular.element(document.getElementById('main_form')).scope();
    // 通过Zeppelin上下文绑定变量,完成跨解释器同步
    angFormScope.z.angularBind("testvar", "hello");
});
</script>

如果全局z对象可直接访问,也可以用更简洁的写法:

<script>
$(document).ready(function() {
    z.angularBind("testvar", "hello");
});
</script>

修改后,在PySpark段落中执行原代码即可正常获取变量值:

testvar = z.get("testvar")
print(testvar)
补充说明
  • z.get(key)的语法完全正确,无需指定self,因为z本身就是ZeppelinContext的实例。
  • Zeppelin的跨解释器变量共享依赖上下文同步机制,直接操作Angular作用域不会触发同步,必须通过angularBind方法将变量存入共享上下文,才能被PySpark等其他解释器读取。

内容的提问来源于stack exchange,提问作者Alex Kerr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 05:00:39