當我執行一個函數google-cloud-bigquery: 2.7.0jar,它執行一個函數gax: 2.12.2jar,然後這個gax jar文件執行一個函數番石榴jar。這番石榴jar文件是位於一個磚默認庫/磚/罐/——workspace_spark_3_2——maven-trees蜂巢3.2 - 2.3 - __hadoop -——com.google.guava番石榴,com.google.guava__guava__15.0.jar。
但問題是這番石榴:15.0 jar文件沒有功能directExecutor它使給我這個錯誤:
NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor () Ljava / util /並發/執行人;在com.google.api.gax.retrying.BasicRetryingFuture。< init > (BasicRetryingFuture.java: 88) com.google.api.gax.retrying.DirectRetryingExecutor.createFuture (DirectRetryingExecutor.java: 86) com.google.api.gax.retrying.DirectRetryingExecutor.createFuture (DirectRetryingExecutor.java: 73) com.google.cloud.bigquery.BigQueryRetryHelper.run (BigQueryRetryHelper.java: 85) com.google.cloud.bigquery.BigQueryRetryHelper.runWithRetries (BigQueryRetryHelper.java: 49) com.google.cloud.bigquery.BigQueryImpl.create (BigQueryImpl.java: 365) com.google.cloud.bigquery.BigQueryImpl.create (BigQueryImpl.java: 345)
我想刪除這個默認番石榴jar文件按照本文檔(https://kb.m.eheci.com/libraries/replace-default-jar-new-jar.html),
但是一旦我這樣做,
我下麵這個錯誤,無法啟動集群。
集群終止。錯誤原因:火花引發在啟動時遇到了一個錯誤。這個問題可能是由於無效的火花或故障的init腳本配置。請參閱火花司機日誌來解決這個問題,和接觸磚如果問題依然存在。內部錯誤消息:引發錯誤:司機下來
總之,我的目標是升級番石榴JAR文件的版本。
我怎麼能解決這個問題呢?
謝謝。
你好,
看起來你需要一個特定的方法“directExecutor”,不存在默認集群上壇子。你嚐試替換jar或隻刪除番石榴15罐嗎?如果是後者,這就能解釋集群啟動失敗。
經曆番石榴API文檔,directExecutor()方法出現在後來的版本中MoreExecutors類。例如,你可以看到它在19個版本https://guava.dev/releases/19.0/api/docs/com/google/common/util/concurrent/MoreExecutors.htmland在版本後23:https://guava.dev/releases/23.0/api/docs/
做一個搜索這個罐子看起來版本可能打破向後兼容性。這個方法是存在於18日最早的版本。
為了確保您替換jar,你應該試試以下:
就像KB文章警告說,它需要測試和可能不工作由於依賴關係和其他jar的局限性。