【问题标题】:Unable to import cosmosDB packages in spark-shell无法在 spark-shell 中导入 cosmosDB 包
【发布时间】:2019-10-18 18:15:52
【问题描述】:

我正在尝试将一些数据从 dataframe 上传到 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 中导入任何包,则会抛出上述错误!

【问题讨论】:

    标签: scala shell apache-spark apache-spark-sql azure-cosmosdb


    【解决方案1】:

    当我尝试这个时,我遇到了 --jars 选项使用相对路径检索 jar 文件的问题,除非我在存储 jar 文件的路径的开头添加了“file:///”。 例如,如果 jar 文件位于 /usr/local/spark/jars_added/(我创建的文件夹)中,则 --jars 选项所需的路径是 file:///usr/local/spark/jars_added/*.jar,其中“*”代表您的 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 文件的默认位置(请注意,如果您在 $SPARK_HOME 中有一个 jars 文件夹,这将覆盖默认位置。如果读者不确定$SPARK_HOME 很可能等于 /usr/local/spark)。例如,默认情况下,在我的机器上,jar 是从 /usr/local/spark/assembly/target/scala-2.11/jars 检索的。

    【讨论】:

    • 我尝试提供 jar 文件的完整路径,并且成功了。
    【解决方案2】:

    当我在--jars 之后为每个 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,eventHub_Jars/azure-eventhubs-spark_2.11-2.3.2.jar,eventHub_Jars/azure-eventhubs-1.0.2.jar,eventHub_Jars/proton-j-0.25.0.jar,eventHub_Jars/scala-java8-compat_2.11-0.9.0.jar,eventHub_Jars/slf4j-api-1.7.25.jar,eventHub_Jars/azure-cosmosdb-spark_2.3.0_2.11-1.3.3.jar
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 2018-05-07
      • 2021-04-30
      • 2023-02-15
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      相关资源
      最近更新 更多