我正在尝试从具有 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。
我是否缺少依赖项或其他东西?
您可能缺少“javax.xml.stream”依赖项。在这里你可以找到 Jar,但我不知道如何将它添加到 python 中。
https://mvnrepository.com/artifact/javax.xml.stream/stax-api/1.0-2