我无法使用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>)
您可以检查上下文对象的类型/类,以在源代码中查找它们的方法。
%spark.pyspark
print(type(z))
# <class '__main__.PyZeppelinContext'>
print(z.z.getClass())
# class org.apache.zeppelin.spark.SparkZeppelinContext
SparkZeppelinContext
延伸BaseZeppelinContext
,您可以在其中找到与 this chart 中记录的后端 API 相匹配的方法。 .
关于python - Apache Zeppelin 上没有使用 python 解释器的 runParagraph(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49116655/