CosmosDB Spark連接器庫衝突

本文解釋了如何解決在數據鏈球菌環境中使用COSMOSDB SPARK連接器的運行應用程序。

受影響的版本

Databricks運行時4.0及以上(包括SPARK 2.3的運行時間)。

問題

通常,如果您在火花集群中添加Maven依賴關係,則應用程序應該能夠使用所需的連接器庫。但是目前,如果您簡單地指定COSMOSDB SPARK連接器的Maven坐標作為群集的依賴性,則將獲得以下例外:

java.lang.noclassdeffounderror:無法初始化com.microsoft.azure.cosmosdb.document類

原因

發生這種情況是因為Spark 2.3使用傑克遜 - 戴塔賓德-2.6.7.1,而cosmosdb spark連接器使用傑克遜·戴塔賓德2.9.5。這會造成庫衝突,在執行者級別您會觀察到以下例外:

java.lang.nosuchfielderror:allow_trailing_comma在com.microsoft.azure.cosmosdb.internal.utils。(utils.java:69)

解決方案

為了避免這個問題:

  1. 直接下載CosmosDB Spark連接器Uber Jar:azure-cosmosdb-spark_2.3.0_2.11-1.2.2-uber.jar
  2. 按照說明將下載的JAR上傳到Databricks安裝上傳的庫
  3. 安裝上傳的庫到您的數據集群。

有關更多信息,請參閱Azure Cosmos DB