无法从spark/scala中的jupyter堆栈容器创建到azure存储帐户的客户端

问题描述 投票:0回答:1

我正在尝试从具有 saskey 的 Azure 存储帐户获取一些文件。 到目前为止,我已经能够在 jupyter 堆栈“jupyter/spark-all-notebook”容器上使用 python 来获取它们。

我使用以下 %spark_init 魔法在内核启动时加载所需的库。目前我已经评论了 fastxml.jackson jar,因为我发现该图像正在自动预加载版本 2.12.3。

    %%init_spark
launcher.packages = ["com.microsoft.azure:spark-mssql-connector_2.12_3.0:1.0.0-alpha",
                     #"com.fasterxml.jackson.core:jackson-core:2.11.4",
                     #"com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.4",
                     #"com.fasterxml.jackson.core:jackson-databind:2.11.4",
                     "com.azure:azure-storage-common:12.12.0",
                     "com.azure:azure-storage-blob:12.12.0"]

但是,当尝试创建与存储帐户的连接时:

import com.azure.storage._
import com.azure.storage.blob.BlobServiceClient
import com.azure.storage.blob.BlobServiceClientBuilder
import com.azure.storage.blob.implementation.util.ModelHelper

try{

   val storageKeyValue = "<<provided_sas_key>>"


  val blobServiceClient = new BlobServiceClientBuilder()
      .endpoint("https://<<account_name>>.blob.core.windows.net/" + "?" + storageKeyValue)
      .buildClient()
  }
  catch {
    case ex : Exception => {
      println ("\n" + ex)
      println ("\n" + ex.printStackTrace + "\n")
    }
    case ex : NoClassDefFoundError => {
        println (ex)
        println(ex.printStackTrace)
    }
}

我收到未定义函数的错误:

java.lang.NoSuchMethodError: 'com.fasterxml.jackson.databind.cfg.MutableCoercionConfig com.fasterxml.jackson.dataformat.xml.XmlMapper.coercionConfigDefaults()'
  at com.fasterxml.jackson.dataformat.xml.XmlMapper.<init>(XmlMapper.java:175)
  at com.fasterxml.jackson.dataformat.xml.XmlMapper.<init>(XmlMapper.java:144)
  at com.fasterxml.jackson.dataformat.xml.XmlMapper.<init>(XmlMapper.java:126)
  at com.fasterxml.jackson.dataformat.xml.XmlMapper.builder(XmlMapper.java:209)
  at com.azure.core.util.serializer.JacksonAdapter.<init>(JacksonAdapter.java:137)
  at com.azure.storage.blob.implementation.util.ModelHelper.<clinit>(ModelHelper.java:49)
  at com.azure.storage.blob.BlobUrlParts.parse(BlobUrlParts.java:371)
  at com.azure.storage.blob.BlobServiceClientBuilder.endpoint(BlobServiceClientBuilder.java:132)
  at liftedTree1$1(<console>:44)
  ... 37 elided

我尝试更改 jackson core、dataformat 和 databind 的版本,但我认为笔记本默认加载 2.12.3。

我是否缺少依赖项或其他东西?

azure apache-spark jupyter
1个回答
0
投票

您可能缺少“javax.xml.stream”依赖项。在这里你可以找到 Jar,但我不知道如何将它添加到 python 中。

https://mvnrepository.com/artifact/javax.xml.stream/stax-api/1.0-2

© www.soinside.com 2019 - 2024. All rights reserved.