Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 使用pyspark批处理作业读取卡夫卡的最新记录_Apache Spark_Apache Kafka - Fatal编程技术网

Apache spark 使用pyspark批处理作业读取卡夫卡的最新记录

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",

我正在pyspark中执行批处理作业,spark将每隔5分钟从kafka主题读取数据

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-最新版本
用以下内容暗示你应该做什么:

  • 最后,将这些卡夫卡主题内偏移保存到文件系统-本地或HDF(或提交给ZooKeeper)。这将用于 下一次运行卡夫卡主题的开始偏移量。这是我们要做的 确保作业的下一次运行将从上一次运行的偏移量读取 向左跑
  • 我认为这个博客有助于节省补偿