[英]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-topic.sh --describe
我的問題是 Spark 工作人員和 Kafka 代理之間的連接不穩定。 有時 Spark 工作人員無法建立新連接。 我嘗試在 Linux 上使用 telnet 命令來檢查我的所有工作人員是否都可以連接到 Kafka 代理列表。 一些工作人員無法連接到 Kafka 代理,然后我與網絡團隊核實以更新防火牆規則。 重新配置防火牆規則后,所有Spark worker都可以穩定連接Kafka broker,問題解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.