【问题标题】:Spark Job with Kafka on Kubernetes在 Kubernetes 上使用 Kafka 触发作业
【发布时间】:2020-06-11 12:55:59
【问题描述】:

我们有一个 Spark Java 应用程序,它从数据库中读取数据并在 Kafka 上发布消息。当我们使用以下参数在 Windows 命令行上本地执行作业时,它按预期工作:

bin/spark-submit -class com.data.ingestion.DataIngestion --jars  local:///opt/spark/jars/spark-sql-kafka-0-10_2.11-2.3.0.jar local:///opt/spark/jars/data-ingestion-1.0-SNAPSHOT.jar

spark-submit --packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.3.0 --class com.data.ingestion.DataIngestion data-ingestion-1.0-SNAPSHOT.jar

同样,当尝试使用 k8s master 运行命令时

bin/spark-submit --master k8s://https://172.16.3.105:8443 --deploy-mode cluster --conf spark.kubernetes.container.image=localhost:5000/spark-example:0.2 --class com.data.ingestion.DataIngestion --jars  local:///opt/spark/jars/spark-sql-kafka-0-10_2.11-2.3.0.jar local:///opt/spark/jars/data-ingestion-1.0-SNAPSHOT.jar

它给出以下错误:

Exception in thread "main" java.util.ServiceConfigurationError: 
org.apache.spark.sql.sources.DataSourceRegister: Provider 
org.apache.spark.sql.kafka010.KafkaSourceProvider could not be instantiated

【问题讨论】:

  • 您使用的是什么数据库?听起来你可以改用 Debezium

标签: java apache-spark kubernetes apache-kafka


【解决方案1】:

似乎 Scala 版本和 Spark Kafka 版本不一致。

【讨论】:

    【解决方案2】:

    根据错误提示,集群中至少有一个节点没有/opt/spark/jars/spark-sql-kafka-0-10_2.11-2.3.0.jar

    我建议你创建一个包含这个 Kafka Structured Streaming 包的 uber jar,或者使用 --packages 而不是本地文件,此外还可以设置像 Rook 或 MinIO 这样的解决方案来在 k8s/spark 中拥有一个共享文件系统

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 2021-07-15
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 2015-05-13
      相关资源
      最近更新 更多