簡體   English   中英

從 jar 運行時,Spark 作業無法連接到 cassandra

[英]Spark job can't connect to cassandra when ran from a jar

我有將數據寫入 Cassandra 的 Spark 作業(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

我想知道為什么會發生這種情況以及如何解決?

問題是除了這兩件事之外,您還需要更多的 jars - 完整的 Java 驅動程序及其依賴項。 您有以下可能性來解決這個問題:

  1. 您需要確保使用 Maven 或 SBT 或其他任何方式將這些工件打包到生成的 jar(所謂的“fat jar”或“程序集”)中

  2. 您可以使用--packages這樣的--packages com.datastax.spark:spark-cassandra-connector_2.12:3.0.0-beta指定 maven 坐標com.datastax.spark:spark-cassandra-connector_2.12:3.0.0-beta --packages com.datastax.spark:spark-cassandra-connector_2.12:3.0.0-beta

  3. 您可以將spark-cassandra-connector-assembly工件下載到您正在執行spark-submit的節點,然后將該文件名與--jars一起--jars

有關更多詳細信息,請參閱Spark Cassandra 連接器文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM