连接到kafka集群时如何在结构化流中禁用'spark.security.credentials.${service}.enabled'

How to disable 'spark.security.credentials.${service}.enabled' in Structured streaming while connecting to a kafka cluster

我正在尝试使用 spark 结构化流从安全的 Kafka 集群读取数据。 此外,我正在使用以下库读取数据 - "spark-sql-kafka-0-10_2.12":"3.0.0-preview" 因为它具有指定我们的自定义组 ID 的功能(而不是 spark 设置自己的自定义组 ID)

代码中使用的依赖项:

        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql-kafka-0-10_2.12</artifactId>
        <version>3.0.0-preview</version>

我收到以下错误 - 即使在 spark 选项中指定了所需的 JAAS 配置之后也是如此。

原因:java.lang.IllegalArgumentException:要求失败:此连接器必须存在委派令牌。 在 scala.Predef$.require(Predef.scala:281) 在 org.apache.spark.kafka010.KafkaTokenUtil$.isConnectorUsingCurrentToken(KafkaTokenUtil.scala:299) 在 org.apache.spark.sql.kafka010.KafkaDataConsumer.getOrRetrieveConsumer(KafkaDataConsumer.scala:533) 在 org.apache.spark.sql.kafka010.KafkaDataConsumer.$anonfun$get$1(KafkaDataConsumer.scala:275)

以下文档指定我们可以禁用获取委托令牌的功能 - https://spark.apache.org/docs/3.0.0-preview/structured-streaming-kafka-integration.html

我尝试在 spark 配置中将此 属性 spark.security.credentials.kafka.enabled 设置为 false,但它仍然失败并出现相同的错误。

显然,预览版中似乎存在错误,已在 GA Spark 3.x 版中修复。

参考: https://issues.apache.org/jira/plugins/servlet/mobile#issue/SPARK-30495

现在,我们可以在从 Kafka 获取数据时指定我们的自定义消费者组名称(尽管不推荐这样做,我们在指定时会看到一条警告消息)。