spark job从jar里跑出来时无法连接到cassandra

gpfsuwkq  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(371)

我有一个spark的工作,就是给cassandra写数据(cassandra在gcp上)。当我从intellijidea(我的ide)运行它时,它工作得非常好。数据被完美地发送和写入Cassandra。然而,当我将我的项目打包到一个胖jar中并运行它时,这就失败了。
下面是一个如何运行它的示例。

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

我想知道为什么会发生这种情况,我怎么能解决它?

tf7tbtn2

tf7tbtn21#

问题是,除了这两件事之外,还需要更多的jars-FullJava驱动程序及其依赖项。您可以通过以下方式解决此问题:
您需要确保使用maven或sbt或其他任何东西将这些工件打包到结果jar(所谓的“fat jar”或“assembly”)中
可以指定maven坐标 com.datastax.spark:spark-cassandra-connector_2.12:3.0.0-beta--packages 这样地 --packages com.datastax.spark:spark-cassandra-connector_2.12:3.0.0-beta 您可以将spark cassandra连接器组件工件下载到您正在执行的节点 spark-submit ,然后将该文件名与 --jars 有关更多详细信息,请参阅spark cassandra连接器的文档。

相关问题