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 - 1
删除由 spark-structured-streaming 写入的损坏的 parquet 文件时,我会丢失数据吗?