数据块-结构化流:控制台格式什么也不显示

时间:2018-11-09 19:15:20

标签: python spark-streaming databricks

我正在学习使用Databricks进行结构化流传输,并且在DataStreamWriter控制台模式下苦苦挣扎。

我的程序:

  • 模拟文件流式传输到达文件夹“ monitoring_dir”(每10秒从“ source_dir”传输一个新文件)。
  • 使用DataStreamReader用每个新文件的内容填充Unbounded DataFrame“ inputUDF”。
  • 使用DataStreamWriter将“ inputUDF”的新行输出到有效接收器。

尽管该程序在选择使用文件接收器时有效(批处理被附加到“ result_dir”中的文本格式文件中),但是选择“控制台接收器”时看不到显示任何内容。

此外,当我在本地计算机上运行该程序的等效版本(安装了Spark)时,它对于文件接收器和控制台接收器都可以正常工作。

我的问题是:

  • 使用Databricks时,如何使该程序输出到控制台接收器并显示结果?

非常感谢您!

最好的问候, 玉米片


我的程序:myTest.py

globalArray

我的数据集:f1.txt

第一句话。

第二句话。


我的数据集:f2.txt

第三句话。

第四句话。


我的数据集:f3.txt

第五句话。

第六句话。

1 个答案:

答案 0 :(得分:0)

<块引用>

“如何让这个程序在使用 Databricks 时输出到控制台接收器并显示结果?”

最简单的方法是使用 Databricks 提供的 display。您可以按如下所示使用它:

# Cell 1
rateDf = (spark.readStream
  .format("rate")
  .option("rowsPerSecond", 1)
  .option("numPartitions", 1)
  .load())

# Cell 2
display(rateDf, streamName="rate_stream")

控制台接收器在 Databricks 中不起作用,因为您希望它在您的 IDE 中运行或在将其提交到集群时运行。相反,您可以使用 memory 格式并使用 %sql 查询查询数据:

inputUDF.writeStream \
  .format("memory") \
  .trigger(processingTime = "10 seconds") \
  .queryName("inputUDF_console") \
  .outputMode("append") \
  .start()  

在另一个 Databricks 单元中,您可以通过查询 queryName 中给出的表来查看数据:

%sql select * from inputUDF_console