如何通过指定开始和结束时间戳,使用 kinesis 或 kafka 中的 databricks 读取历史数据?

问题描述 投票:0回答:1

我想读取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()

apache-spark databricks spark-structured-streaming amazon-kinesis
1个回答
2
投票

我认为您正在寻找的是批处理而不是流处理,因为您想要回填作业。

不幸的是,您无法将 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 功能不要读取所有数据)。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.