在 Apache Zeppelin 上没有使用 python 解释器的 runParagraph()

No runParagraph() using python interpreter on Apache Zeppelin

我无法使用 z.z.useParagraph() 既不使用 %python 也不使用 %spark.pyspark 解释器。

在一个最小的无效示例中,可以从一个空笔记本开始并添加以下两段:

第一段:

%python
print("Hello")
z.z.runParagraph('REPLACE_ME')

第二段:

%python
print("World")

然后将 REPLACE_ME 替换为第二段的段落 ID,最后 运行 替换第一段。结果将是一个异常,说明方法 runParagraph() 确实存在。我得到的完整异常是:

Traceback (most recent call last):
  File "/tmp/zeppelin_python-9073316303905892812.py", line 283, in <module>
    raise Exception(traceback.format_exc())
Exception: Traceback (most recent call last):
  File "/tmp/zeppelin_python-9073316303905892812.py", line 276, in <module>
    exec(code, _zcUserQueryNameSpace)
  File "<stdin>", line 2, in <module>
  File "/zeppelin/interpreter/python/py4j-0.9.2/src/py4j/java_gateway.py", line 836, in __call__
    answer, self.gateway_client, self.target_id, self.name)
  File "/zeppelin/interpreter/python/py4j-0.9.2/src/py4j/protocol.py", line 314, in get_return_value
    format(target_id, ".", name, value))
Py4JError: An error occurred while calling t.runParagraph. Trace:
py4j.Py4JException: Method runParagraph([class java.lang.String]) does not exist
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:335)
    at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:344)
    at py4j.Gateway.invoke(Gateway.java:279)
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133)
    at py4j.commands.CallCommand.execute(CallCommand.java:79)
    at py4j.GatewayConnection.run(GatewayConnection.java:209)
    at java.lang.Thread.run(Thread.java:748)

然而,

%python
z.z.runParagraph

报告 <py4j.java_gateway.JavaMember object at 0x7f7319460d90>,所以我想应该以这种方式访问​​该方法。我是否缺少一些初始化步骤?我怎样才能 运行 使用 python 口译员的其他段落?

你想要的方法是z.z.run(<paragraph-id>)

您可以检查上下文对象的 type/class 以在源代码中查找它们的方法。

%spark.pyspark
print(type(z))
# <class '__main__.PyZeppelinContext'>
print(z.z.getClass())
# class org.apache.zeppelin.spark.SparkZeppelinContext

SparkZeppelinContext 扩展了 BaseZeppelinContext,您可以在其中找到与 this chart.

中为后端 API 记录的方法相匹配的方法