有没有办法使用结构化流式传输来读取Glue目录? 当我做这样的事情时:
sparkSession
.catalog()
.createTable("test", "s3n://test-bucket/data/")
.as(Encoders.bean(dataType))
.writeStream()
.outputMode(OutputMode.Append())
.format("parquet")
.option("path", outputFolder.getRoot().toPath().toString())
.option("checkpointLocation", checkpointFolder.getRoot().toPath().toString())
.queryName("test-query")
.start();
我收到错误org.apache.spark.sql.AnalysisException: 'writeStream' can be called only on streaming Dataset/DataFrame;
有问题的代码段和异常与实际问题无关。我想知道是否有办法使用Glue目录作为Spark中结构化流媒体的来源
答案 0 :(得分:1)
该例外应该为您提供所需的所有信息:
'writeStream'只能在流数据集/ DataFrame上调用;
注册表不是流媒体源,因此不能被视为流。
您可以实现自己的源代码,支持流式读取,但考虑到表没有任何通知机制,除非架构本身提供了管理基于时间的高效查询的方法,否则没有有效的方法可以做到这一点。例如,时间戳和基于时间的分区。
由于您的数据来自S3存储桶,因此直接将其用作源是更有意义的。