Hi,

I am trying to build a simple notebook to confirm dynamic streaming updates
to an angular widget via z.bindAngular.

note that I use %pyspark streaming. Here is my simplified variation of the
pyspark streaming tutorial, which i confirmed working in the pyspark shell:

Note1:
%pyspark

from pyspark import SparkContext
from pyspark.streaming import StreamingContext


def pushCount(c):
    global z
    z.put("c",c)
    return c

ssc = StreamingContext(sc, 5)
lines = ssc.socketTextStream("localhost",9999)

lines.count().map(pushCount).pprint()
ssc.start()

in Note2, which is Scala/spark, we communicate the count value to the
angular, which is also ripped from a working example on Zeppelin PR 27:

Note:

val timer = new java.util.Timer()

// start monitoring. once a second.
val task = new java.util.TimerTask {
  def run() {
      val c = z.get("c")
      z.angularBind("c", Array("TestCount" -> c))
  }
}

timer.schedule(task, 1000L, 1000L)

Finally, there is a note attaching angular progressbar attached to the
variable "c" (counts).

I confirmed that if i execute z.put("c", 5) in a %pyspark note, the bar
updates (via timer task polling). But update from the stream doesn't seem
to be working at all, dead on arrival. I can't get any values from it no
matter what i do.

(1) Is there a pyspark streaming support in Zeppelin at all? Was it ever
verified to work? In fact, i haven't found a single example anywhere of
Zeppelin + pyspark streaming.

(2) Or, the assumption that z.put() works from inside DStream.map is wrong?
Which could be true if this closure is shipped via spark-submit somewhere.

(3) or i am doing something else wrong?

Master is local[*]. I am running the master Zeppelin branch (latest
snapshot).

thank you very much in advance,
-d

Reply via email to