我想使用 Spark Structured Streaming 从安全的 kafka 中读取数据。这意味着我需要强制使用特定的 group.id。但是,正如文档中所述,这是不可能的。尽管如此,在 databricks 文档https://docs.azuredatabricks.net/spark/latest/structured-streaming/kafka.html#using-ssl 中,它说这是可能的。这是否仅指 azure 集群?
另外,通过查看 apache/spark repo https://github.com/apache/spark/blob/master/docs/structured-streaming-kafka-integration.md的 master 分支的文档,我们可以理解这样的功能旨在在以后的 Spark 版本中添加。你知道这样一个稳定版本的任何计划,这将允许设置消费者 group.id 吗?
如果没有,Spark 2.4.0 是否有任何解决方法可以设置特定的消费者 group.id?
apache-kafka apache-spark spark-structured-streaming spark-kafka-integration
为了在我的项目中使用结构化流,我正在 hortonworks 2.6.3 环境上测试 Spark 2.2.0 和 Kafka 0.10.1 与 Kerberos 的集成,我正在运行下面的示例代码来检查集成。我能够在 Spark 本地模式下的 IntelliJ 上运行以下程序,没有任何问题,但是当在 Hadoop 集群上移动到纱线集群/客户端模式时,相同的程序会抛出以下异常。
我知道我可以为 group-id 配置 kafka acl,但是 Spark 结构化流为每个查询生成新的 group-id,因此我无法在 kafka acl 中配置 group-id 以摆脱授权异常。我现在有点卡住了。
14:19:59 org.apache.spark.sql.streaming.StreamingQueryException: Not authorized to access group: spark-kafka-source-632450e3-a111-4d09-8704-85320c572aeb--1213729126-driver-2
例外:
18/01/31 14:46:34 INFO AbstractLogin: Successfully logged in.
18/01/31 14:46:34 INFO KerberosLogin: TGT refresh thread started.
18/01/31 14:46:34 INFO KerberosLogin: TGT valid starting at: Wed Jan 31 13:51:11 UTC 2018
18/01/31 14:46:34 INFO KerberosLogin: TGT expires: Wed Jan 31 23:51:14 UTC …Run Code Online (Sandbox Code Playgroud) hadoop kerberos apache-kafka apache-spark kafka-consumer-api