Spark结构化流媒体,在流媒体时创建Kafka主题

时间:2018-08-07 18:23:53

标签: apache-spark apache-kafka apache-spark-dataset spark-structured-streaming

我正在使用Kafka作为接收器进行火花结构化流式传输。 我正在运行以下代码

  ds.selectExpr("topic", "CAST(key AS STRING)", "CAST(value AS STRING)")
  .writeStream
  .format("kafka")
  .option("kafka.bootstrap.servers", "localhost:9092")
  .option("checkpointLocation", "/tmp/checkpoint1")
  .start()
  .awaitTermination()

将“主题”列作为发布数据的主题。在我的应用程序中,我在写流之后删除了该主题。 但只要Spark将下一批写入水槽。它将再次创建所有主题。

例如批次1(数据集)

+ ---------- +
|主题|
+ ---------- +
| test375636 |
| test1234 |
+ ---------- +

spark将此批处理写入主题,然后我的应用程序删除主题 因此Kafka在列表中没有主题。

但是有第二批
+ ---------- +
|主题|
+ ---------- +
| test3245 |
+ ---------- +

spark还将查找主题test375636和test1234的元数据。 因此,它再次创建了这些主题。 如果我将代理设置更改为auto.create.topics.enable = false,则火花引发错误

  

18/08/07 14:11:49 WARN NetworkClient:提取关联ID为255的元数据时出错:{test880703 = UNKNOWN_TOPIC_OR_PARTITION,test1234 = UNKNOWN_TOPIC_OR_PARTITION,test375636}

我的要求是,一旦火花将数据写入流(Kafka接收器)。它不应再次查找主题的元数据。

0 个答案:

没有答案