【问题标题】:Structured Streaming output is not showing on Jupyter NotebookJupyter Notebook 上未显示结构化流输出
【发布时间】:2020-08-11 06:48:53
【问题描述】:

我有两个笔记本。第一个笔记本正在使用 tweepy 从 twitter 读取推文并将其写入套接字。其他笔记本正在使用 spark 结构化流 (Python) 从该套接字读取推文并将其结果写入控制台。不幸的是,我没有在 jupyter 控制台上得到输出。代码在 pycharm 上运行良好。

spark = SparkSession \
    .builder \
    .appName("StructuredStreaming") \
    .getOrCreate()
spark.sparkContext.setLogLevel("ERROR")

# This is Spark Structured Streaming Code which is reading streams from twitter and showing them on console.
tweets = spark \
    .readStream \
    .format("socket") \
    .option("host", "127.0.0.1") \
    .option("port", 7000) \
    .load()

query = tweets \
    .writeStream \
    .option("truncate", "false") \
    .outputMode("append") \
    .format("console") \
    .start()

query.awaitTermination()

【问题讨论】:

  • 你是从 twitter 还是 socket 读取数据?正如你的评论所说,阅读 twitter。
  • 我正在从套接字读取数据。
  • 一个笔记本正在从 twitter 读取推文并将它们写入套接字,而另一个笔记本正在使用结构化流从该套接字读取推文。

标签: apache-spark pyspark jupyter-notebook spark-streaming spark-structured-streaming


【解决方案1】:

我不确定 Jupyter Notebook 是否可以做到这一点。但是,您可以使用内存输出来实现类似的结果。这在complete 模式下很简单,但可能需要对append 进行一些更改。

对于complete 模式

complete 输出模式下,您的查询应该大致如下:

query = tweets \
    .writeStream \
    .outputMode("complete") \
    .format("memory") \
    .queryName("your_query_name") \
    .start()

请注意,最后没有query.awaitTermination()。 现在,在另一个单元格中查询your_query_name 临时表,并随时查看不断更新的结果:

from IPython.display import display, clear_output

while True:
    clear_output(wait=True)
    display(query.status)
    display(spark.sql('SELECT * FROM your_query_name').show())
    sleep(1)

对于append 模式

如果您想使用append 输出模式,则必须使用水印。您也将无法使用聚合,因此您的代码可能需要进一步更改。

query = tweets \
    .withWatermark("timestampColumn", "3 minutes")
    .writeStream \
    .outputMode("append") \
    .format("memory") \
    .queryName("your_query_name") \
    .start()

显示代码保持不变。 您也可以通过类似的方式显示query.lastProgress 以获取更多详细信息。

启示和参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 2021-04-26
    相关资源
    最近更新 更多