Spark 作业在从罐子运行时无法连接到 Cassandra



我有一个向Cassandra写入数据的spark作业(Cassandra在GCP上(。当我从IntelliJIDEA(我的IDE(运行这个时,它运行得非常好。数据被完美地发送并写入Cassandra。然而,当我把我的项目打包到一个胖罐子里并运行它时,这就失败了

下面是我如何运行它的一个例子

spark-submit --class com.testing.Job --master local out/artifacts/SparkJob_jar/SparkJob.jar 1 0

然而,这对我来说失败了,并给了我以下错误

Caused by: java.io.IOException: Failed to open native connection to Cassandra at {X.X.X:9042} :: 'com.datastax.oss.driver.api.core.config.ProgrammaticDriverConfigLoaderBuilder com.datastax.oss.driver.api.core.config.DriverConfigLoader.programmaticBuilder()'

Caused by: java.lang.NoSuchMethodError: 'com.datastax.oss.driver.api.core.config.ProgrammaticDriverConfigLoaderBuilder com.datastax.oss.driver.api.core.config.DriverConfigLoader.programmaticBuilder()'

我的工件文件确实包括spark Cassandra文件

spark-cassandra-connector-driver_2.12-3.0.0-beta.jar
spark-cassandra-connector_2.12-3.0.0-beta.jar

我想知道为什么会发生这种情况,我该如何解决?

问题是,除了这两件事之外,还需要更多的jar-完整的Java驱动程序及其依赖关系。你有以下可能性来解决这个问题:

  1. 您需要确保使用Maven或SBT或任何其他将这些工件打包到生成的罐子(所谓的"胖罐子"或"组件"(中

  2. 你可以像这个--packages com.datastax.spark:spark-cassandra-connector_2.12:3.0.0-beta一样用--packages指定maven坐标com.datastax.spark:spark-cassandra-connector_2.12:3.0.0-beta

  3. 您可以将spark-cassandra连接器组件工件下载到执行spark-submit的节点,然后将该文件名与--jars一起使用

有关更多详细信息,请参阅Spark Cassandra连接器的文档。

最新更新