Apache spark 使用pyspark批处理作业读取卡夫卡的最新记录
我正在pyspark中执行批处理作业,spark将每隔5分钟从kafka主题读取数据Apache spark 使用pyspark批处理作业读取卡夫卡的最新记录,apache-spark,apache-kafka,Apache Spark,Apache Kafka,我正在pyspark中执行批处理作业,spark将每隔5分钟从kafka主题读取数据 df = spark \ .read \ .format("kafka") \ .option("kafka.bootstrap.servers", "host1:port1") \ .option("subscribePattern", "test") \ .option("startingOffsets", "earliest") \ .option("endingOffsets",
df = spark \
.read \
.format("kafka") \
.option("kafka.bootstrap.servers", "host1:port1") \
.option("subscribePattern", "test") \
.option("startingOffsets", "earliest") \
.option("endingOffsets", "latest") \
.load()
每当spark从kafka读取数据时,它都在读取所有数据,包括以前的批处理。
我想读取以前未读取的当前批次或最新记录的数据。
请建议!!谢谢。来自
对于批处理查询,最新的(隐式地或通过在json中使用-1)
这是不允许的
使用“最早”意味着再次获得所有数据
每次运行时都需要明确定义偏移量,例如:
.option("startingOffsets", """{"topic1":{"0":23,"1":-2},"topic2":{"0":-2}}""")
这意味着您需要保存每个分区处理的偏移量。我正在考虑在不久的将来自己的一个项目。下面的一些项目有助于:
陈述你所观察到的:
创建Kafka批处理查询
- Spark还提供了一个获取
以批处理模式从卡夫卡获取数据。在批处理模式下,Spark将消耗所有
信息马上就被删除了。批量模式下的卡夫卡需要两个重要的
参数开始偏移和结束偏移(如果未指定)
将考虑默认配置,即
- 启动偏移-最早
- endingOffsets-最新版本