我想读取2023年3月8日至2023年3月14日期间到达的数据
有没有一种方法可以定义结束位置以及下面的初始位置。
spark.readStream.format("kinesis").option("streamName", kinesisStreamName).option("region", kinesisRegion).option("initialPosition", '{"at_timestamp": "03/08/2023 00:00:00 PDT", "format": "MM/dd/yyyy HH:mm:ss ZZZ"}').option("awsAccessKey", awsAccessKeyId).option("awsSecretKey", awsSecretKey).load()
我认为您正在寻找的是批处理而不是流处理,因为您想要回填作业。
不幸的是,您无法将 endPosition 配置设置为 Spark Streaming 应用程序来读取 Kafka 或 Kinesis。
一些建议:
1-如果您有机会将 Kinesis 更改为 Kafka,那么您可以使用 Spark.read("kafka") 方法而不是 Spark.readStream("kafka")。因此,您可以使用以下参数。
.option("startingOffsets", start_offset) \
.option("endingOffsets", end_offset) \
2-如果需要使用 Kinesis,那么您可以使用此 Kinesis Stream 提供 s3 路径。然后,您可以通过设置起始结束条件来使用 Spark 来使用其数据文件。 (我建议 AWS-Glue Pushdown_predicate 功能不要读取所有数据)。
谢谢。