如何从带有火花结构流的Glue目录中读取

时间:2018-02-03 17:31:27

标签: apache-spark apache-spark-sql spark-structured-streaming

有没有办法使用结构化流式传输来读取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中结构化流媒体的来源

1 个答案:

答案 0 :(得分:1)

该例外应该为您提供所需的所有信息:

  

'writeStream'只能在流数据集/ DataFrame上调用;

注册表不是流媒体源,因此不能被视为流。

您可以实现自己的源代码,支持流式读取,但考虑到表没有任何通知机制,除非架构本身提供了管理基于时间的高效查询的方法,否则没有有效的方法可以做到这一点。例如,时间戳和基于时间的分区。

由于您的数据来自S3存储桶,因此直接将其用作源是更有意义的。