簡體   English   中英

使用 pyspark 使用 Kafka 主題失敗

[英]Failed on consuming Kafka topic with pyspark

嘗試使用 pyspark 從 Kafka 主題讀取數據時出現超時錯誤。 我的火花版本是 2.4.5。

我的python代碼:

df = (
    # connect to kafka brokers
    (
        spark.read.format("kafka")
        .option("kafka.bootstrap.servers", kafka_brokers)
        .option("subscribe", kafka_topic)
        .option("includeHeaders", "true")
        .load()
    )
)

df = df.withColumn(
    "message",
    f.from_json(
        f.col("value").cast("string"),
        kafka_schema,
        {"timestampFormat": "yyyy-MM-dd'T'HH:mm:ss.sss'Z'"},
    )
).drop("value")

df.show()

然后我收到以下錯誤:

org.apache.kafka.common.errors.TimeoutException: Timeout of 60000ms expired before the position for partition DVI_COMBINED_SUID_LOG-22 could be determined

我不知道從哪里開始調試。 我檢查了我的 Kafka 服務器,一切都很好。 除了我的 Spark 會話,其他消費者工作順利。

對於此錯誤,我必須檢查系統中的以下元素:

  • Kafka 集群: ./kafka-topic.sh --describe
  • 網絡:檢查防火牆、路由、...

我的問題是 Spark 工作人員和 Kafka 代理之間的連接不穩定。 有時 Spark 工作人員無法建立新連接。 我嘗試在 Linux 上使用 telnet 命令來檢查我的所有工作人員是否都可以連接到 Kafka 代理列表。 一些工作人員無法連接到 Kafka 代理,然后我與網絡團隊核實以更新防火牆規則。 重新配置防火牆規則后,所有Spark worker都可以穩定連接Kafka broker,問題解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM