首页 > 解决方案 > 无法在 spark-shell 中导入 cosmosDB 包

问题描述

我正在尝试将一些数据从数据框上传到 azure cosmosDB。

我已经下载了以下 jar 文件并与 eventHub_Jars 一起添加到我的本地文件夹中。

azure-cosmosdb-spark_2.3.0_2.11-1.3.3.jar
azure-cosmosdb-2.0.0.jar
azure-documentdb-1.16.4.jar
documentdb-bulkexecutor-2.4.1.jar

下面是我用来打开正在运行的 shell 脚本的脚本。

shell-script --master local --jars eventHub_Jars/azure-cosmosdb-spark_2.3.0_2.11-1.3.3.jar

当我将 shell 脚本与 eventHub jar 或其他 jar 一起用作

spark-shell --master local --packages com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.13 --jars eventHub_Jars/scala-library-2.11.12.jar, azure-eventhubs-spark_2.11-2.3.2.jar, azure-eventhubs-1.0.2.jar, proton-j-0.25.0.jar, scala-java8-compat_2.11-0.9.0.jar, slf4j-api-1.7.25.jar, azure-cosmosdb-spark_2.3.0_2.11-1.3.3.jar

Shell脚本正在打开但是当我尝试导入时

import com.microsoft.azure.cosmosdb.spark.config.Config

它抛出以下错误

error: object cosmosdb is not a member of package com.microsoft.azure
       import com.microsoft.azure.cosmosdb.spark.config.Config

上述错误的原因可能是什么?有语法问题吗?似乎唯一添加的第一个 jar 正在工作。如果我们尝试从任何其他 jar 中导入任何包,它会抛出上述错误!

标签: scalashellapache-sparkapache-spark-sqlazure-cosmosdb

解决方案


当我尝试这个时,我遇到了--jars使用相对路径来检索 jar 文件的选项的问题,除非我在存储 jar 文件的路径的开头添加了“file:///”。例如,如果 jar 文件位于(我创建的文件夹)中,则该选项/usr/local/spark/jars_added/所需的路径是“*”代表您的 jar 名称的位置。--jarsfile:///usr/local/spark/jars_added/*.jar

以下内容在您的机器上将有所不同,但是,您了解指定 jar 文件的想法。

spark-shell 
--master local 
--packages com.microsoft.azure:azure-eventhubs-spark_2.11:2.3.13 
--jars file:///usr/local/spark/jars_added/eventHub_Jars/scala-library-2.11.12.jar, 
file:///usr/local/spark/jars_added/azure-eventhubs-spark_2.11-2.3.2.jar, 
file:///usr/local/spark/jars_added/azure-eventhubs-1.0.2.jar, 
file:///usr/local/spark/jars_added/proton-j-0.25.0.jar, 
file:///usr/local/spark/jars_added/scala-java8-compat_2.11-0.9.0.jar, 
file:///usr/local/spark/jars_added/slf4j-api-1.7.25.jar, 
file:///usr/local/spark/jars_added/azure-cosmosdb-spark_2.3.0_2.11-1.3.3.jar

或者,您可以将 jar 文件复制到为每个 spark 会话检索 jar 文件的默认位置(请注意,如果您有一个jars文件夹,$SPARK_HOME则会覆盖默认位置。如果读者不确定$SPARK_HOME最有可能等于/usr/local/spark)。/usr/local/spark/assembly/target/scala-2.11/jars例如,在我的机器上,默认情况下会检索 jars 。


推荐阅读