You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by mo...@apache.org on 2015/11/19 14:35:13 UTC
incubator-zeppelin git commit: [ZEPPELIN-428] Support Python
programmatic access to dynamic form
Repository: incubator-zeppelin
Updated Branches:
refs/heads/master 0c50712e3 -> c7633afdb
[ZEPPELIN-428] Support Python programmatic access to dynamic form
https://issues.apache.org/jira/browse/ZEPPELIN-428
This is what it looks like:


Author: Felix Cheung <fe...@hotmail.com>
Closes #437 from felixcheung/pyz and squashes the following commits:
8a7045e [Felix Cheung] add doc for python dynamic form
de00d17 [Felix Cheung] fix type conversion
816319c [Felix Cheung] pyspark new methods
Project: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/commit/c7633afd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/tree/c7633afd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/diff/c7633afd
Branch: refs/heads/master
Commit: c7633afdb09ed43984f7c9842b736bb4744708db
Parents: 0c50712
Author: Felix Cheung <fe...@hotmail.com>
Authored: Tue Nov 17 23:46:10 2015 -0800
Committer: Lee moon soo <mo...@apache.org>
Committed: Thu Nov 19 22:35:38 2015 +0900
----------------------------------------------------------------------
docs/manual/dynamicform.md | 48 ++++++++++++++++++++
.../main/resources/python/zeppelin_pyspark.py | 16 +++++++
2 files changed, 64 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/c7633afd/docs/manual/dynamicform.md
----------------------------------------------------------------------
diff --git a/docs/manual/dynamicform.md b/docs/manual/dynamicform.md
index 36cadef..dc46a5e 100644
--- a/docs/manual/dynamicform.md
+++ b/docs/manual/dynamicform.md
@@ -67,12 +67,60 @@ Here're some examples.
Text input form
+You can do this in Scala
+```scala
+%spark
+println("Hello "+z.input("name"))
+```
+
+Or Python
+```python
+%pyspark
+print("Hello "+z.input("name"))
+```
+
<img src="../../assets/themes/zeppelin/img/screenshots/form_input_prog.png" />
Text input form with default value
+Scala
+```scala
+%spark
+println("Hello "+z.input("name", "sun"))
+```
+
+Python
+```python
+%pyspark
+print("Hello "+z.input("name", "sun"))
+```
+
<img src="../../assets/themes/zeppelin/img/screenshots/form_input_default_prog.png" />
Select form
+Scala
+```scala
+%spark
+println("Hello "+z.select("day", Seq(("1","mon"),
+ ("2","tue"),
+ ("3","wed"),
+ ("4","thurs"),
+ ("5","fri"),
+ ("6","sat"),
+ ("7","sun"))))
+```
+
+Python
+```python
+%pyspark
+print("Hello "+z.select("day", [("1","mon"),
+ ("2","tue"),
+ ("3","wed"),
+ ("4","thurs"),
+ ("5","fri"),
+ ("6","sat"),
+ ("7","sun")]))
+```
+
<img src="../../assets/themes/zeppelin/img/screenshots/form_select_prog.png" />
http://git-wip-us.apache.org/repos/asf/incubator-zeppelin/blob/c7633afd/spark/src/main/resources/python/zeppelin_pyspark.py
----------------------------------------------------------------------
diff --git a/spark/src/main/resources/python/zeppelin_pyspark.py b/spark/src/main/resources/python/zeppelin_pyspark.py
index e57190e..b8daa3d 100644
--- a/spark/src/main/resources/python/zeppelin_pyspark.py
+++ b/spark/src/main/resources/python/zeppelin_pyspark.py
@@ -78,6 +78,22 @@ class PyZeppelinContext(dict):
def get(self, key):
return self.__getitem__(key)
+ def input(self, name, defaultValue = ""):
+ return self.z.input(name, defaultValue)
+
+ def select(self, name, options, defaultValue = ""):
+ # auto_convert to ArrayList doesn't match the method signature on JVM side
+ tuples = map(lambda items: self.__tupleToScalaTuple2(items), options)
+ iterables = gateway.jvm.scala.collection.JavaConversions.collectionAsScalaIterable(tuples)
+ return self.z.select(name, defaultValue, iterables)
+
+ def __tupleToScalaTuple2(self, tuple):
+ if (len(tuple) == 2):
+ return gateway.jvm.scala.Tuple2(tuple[0], tuple[1])
+ else:
+ raise IndexError("options must be a list of tuple of 2")
+
+
class SparkVersion(object):
SPARK_1_4_0 = 140
SPARK_1_3_0 = 130