假设我有一部分代码运行了一段特定的时间,每1秒输出如下:iteration X, score Y.我将用我的黑盒函数替换这个函数:
from random import uniform
import time
def black_box():
i = 1
while True:
print 'Iteration', i, 'Score:', uniform(0, 1)
time.sleep(1)
i += 1
Run Code Online (Sandbox Code Playgroud)
现在,当我在Jupyter笔记本中运行它时,它会在每秒后输出一个新行:
Iteration 1 Score: 0.664167449844
Iteration 2 Score: 0.514757592404
...
Run Code Online (Sandbox Code Playgroud)
是的,在输出变得太大之后,html变得可滚动,但问题是除了当前最后一行之外我不需要任何这些行.因此,我希望只显示一行(最后一行),而不是n在n几秒钟之后使用1行.
我没有在文档中找到这样的东西或者通过魔术找到它.一个几乎相同但无关紧要的问题.
从Zeppelin运行时,我正在努力让接收console器使用PySpark Structured Streaming.基本上,我没有看到任何结果打印到屏幕或我发现的任何日志文件.
我的问题:有没有人有一个使用PySpark Structured Streaming和一个产生Apache Zeppelin可见输出的接收器的工作示例?理想情况下它也会使用套接字源,因为它很容易测试.
我正在使用:
我的代码基于structured_network_wordcount.py示例.它从PySpark shell(./bin/pyspark --master local[2])运行时起作用; 我看到每批表.
%pyspark
# structured streaming
from pyspark.sql.functions import *
lines = spark\
.readStream\
.format('socket')\
.option('host', 'localhost')\
.option('port', 9999)\
.option('includeTimestamp', 'true')\
.load()
# Split the lines into words, retaining timestamps
# split() splits each line into an array, and explode() turns the array into multiple rows
words = lines.select(
explode(split(lines.value, ' ')).alias('word'),
lines.timestamp
)
# …Run Code Online (Sandbox Code Playgroud) apache-spark pyspark apache-zeppelin spark-structured-streaming