Github user Leemoonsoo commented on the issue: https://github.com/apache/zeppelin/pull/1176 z.run() currently submit paragraph into each interpreter's scheduler. Let's say there're PARAGRAPH_1, PARAGRAPH_2, PARAGRAPH_3 ``` %md ... %spark ... %sql ... ``` When user execute ``` z.run(P1) z.run(P2) z.run(P3) ``` z.run(P1) submit a job to run P1 to scheduler of Markdown interpreter. z.run(P2) submit a job to run P2 to scheduler of Spark interpreter. z.run(P3) submit a job to run P3 to scheduler of SparkSQL interpreter. And each scheduler from each different interpreter works independently. That's why P1, P2, P3 runs concurrently. (and this is why 'Run all' button doesn't run paragraph sequentially) Then we can add synchronous option, such as ``` val result1 = z.runSynchronously(P1) val result2 = z.runSynchronously(P2) val result3 = z.runSynchronously(P3) ``` Then we can make sure P2 is not submitted before P1 finishes, P3 is not submitted before P2 finishes. My points are, - We can provide API to interpreter runs notebook or paragraph in the other notebook. So user can define workflow in programming language (i.e. scala, python, etc). It naturally gives more flexibility and power user to creates workflow, because programming language provides such things: conditional block, future, threads, and so on. - To provide sequential job execution, we can provide synchronous api such as `z.runSynchronously()` - In case of users, who are not familiar with programming language, want to creates workflow, we can create %workflow interpreter and invent new syntax or GUI on top of the same `z.run()` API internally. This is more modular and less confusing compare to run workflow with dynamic form syntax.
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---