Spark Structured Streaming Window() 函数 - GeneratedIterator 超过 64 KB

Posted

技术标签:

【中文标题】Spark Structured Streaming Window() 函数 - GeneratedIterator 超过 64 KB【英文标题】:Spark Structured Streaming Window() function - GeneratedIterator grows beyond 64 KB 【发布时间】:2017-03-01 13:49:15 【问题描述】:

我正在使用 Spark Structured Streaming 方法运行以下滑动窗口 SQL 查询。

"SELECT  WINDOW(record_time, \"120 seconds\",\"1 seconds\"), COUNT(*) FROM records GROUP BY  WINDOW(record_time, \"120 seconds\",\"1 seconds\")";

如果我将窗口大小设置为 120 秒并将滑动间隔设置为 1 秒,则会出现以下错误:

org.codehaus.janino.JaninoRuntimeException:类“org.apache.spark.sql.catalyst”的方法“agg_doAggregateWithKeys$(Lorg/apache/spark/sql/catalyst/expressions/GeneratedClass$GeneratedIterator;)V”的代码。 expression.GeneratedClass$GeneratedIterator" 超过 64 KB

对于 Window(90s,1s) 和 Window(120s,2s) 工作正常。

即使我收到了这个错误,但我仍然在控制台上得到了查询的输出。

这样好吗?我应该忽略这个错误吗?

【问题讨论】:

我还有一些发现:如果我使用来自 Kafka 的 readStream() 运行,上面的查询会给出错误。生产者正在从 .csv 文件中放入数据。但是,如果我直接对 .csv 文件运行相同的查询,则使用 read() 或 readStream() 都不会出现此类错误。 【参考方案1】:

试着改用“窗口”。因此,您的查询应如下所示:

SELECT  window, COUNT(*) FROM records GROUP BY  WINDOW(record_time, "120 seconds","1 seconds");

【讨论】:

以上是关于Spark Structured Streaming Window() 函数 - GeneratedIterator 超过 64 KB的主要内容,如果未能解决你的问题,请参考以下文章

Spark Structured Streaming

Spark Structured Streaming

Spark Structured Streaming - 1

删除由 spark-structured-streaming 写入的损坏的 parquet 文件时,我会丢失数据吗?

无法使用Spark Structured Streaming在Parquet文件中写入数据

如何使用Spark Structured Streaming连续监视目录