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 <[email protected]> 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 <[email protected]> Authored: Tue Nov 17 23:46:10 2015 -0800 Committer: Lee moon soo <[email protected]> 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
