这篇文章解释了如何解决一个问题运行应用程序,使用砖CosmosDB-Spark连接器的环境。
问题
通常如果你添加一个Maven依赖火花集群,应用程序应该能够使用所需的连接器库。但目前,如果你简单地指定CosmosDB-Spark连接器的Maven坐标作为集群的依赖,你会得到以下异常:
. lang。com.microsoft.azure.cosmosdb.Document NoClassDefFoundError:无法初始化类
导致
这是因为火花2.3使用jackson-databind-2.6.7.1,而CosmosDB-Spark连接器使用jackson-databind-2.9.5。这将创建一个库冲突和执行人层面您遵守以下例外:
. lang。NoSuchFieldError: ALLOW_TRAILING_COMMA com.microsoft.azure.cosmosdb.internal.Utils。< clinit > (Utils.java: 69)
解决方案
为了避免这个问题:
- 直接下载超级CosmosDB-Spark连接器JAR:azure-cosmosdb-spark_2.3.0_2.11-1.2.2-uber.jar。
- 上传下载的JAR砖后的指令在上传一个JAR, Python鸡蛋,或Python轮(AWS|Azure)。
- 安装上传图书馆作为Cluster-installed库(AWS|Azure)