Доступ к Openstack Swift из Spark - SwiftAuthenticationFailedException - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь получить доступ к Openstack Swift из Spark 2.4, но получаю сообщение об ошибке.

org.apache.hadoop.fs.swift.exceptions.SwiftAuthenticationFailedException: Authenticate as tenant '78axxxxxxxxxxxxxxxxxxxxxxxxxxxx' PasswordCredentials{username='xxxxxxxxxxxx'}

sc.hadoopConfiguration.set(s"fs.swift.service.ovh.auth.url", "https://auth.cloud.ovh.net/v3/")
sc.hadoopConfiguration.set(s"fs.swift.service.ovh.tenant", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")
sc.hadoopConfiguration.set(s"fs.swift.service.ovh.username", "xxxxxxxxxxxx")
sc.hadoopConfiguration.set(s"fs.swift.service.ovh.password", "xxxxxxxxxxxxxxxxxxxx")
sc.hadoopConfiguration.set(s"fs.swift.service.ovh.http.port", "8080")
sc.hadoopConfiguration.set(s"fs.swift.service.ovh.region", "BHS3")
sc.hadoopConfiguration.set(s"fs.swift.service.ovh.public", "false")

Я считаю, что эти учетные данные верны, так как они получены непосредственно из файла openstack rc, и я могу их нормально использоватьпри использовании python-swiftclient.Я также попытался использовать конечную точку v2.0 безуспешно.

К сожалению, я всегда получаю это очень общее сообщение об ошибке, и оно не сообщает мне, какая часть выходит из строя.Есть ли способ отладить это лучше?

1 Ответ

0 голосов
/ 23 апреля 2019

Я использовал приведенный ниже пример, который я получил от команды OVH spark submit. Важным примечанием является использование имени клиента вместо идентификатора клиента из файла openstack.rc.

val hadoopConf = spark.sparkContext.hadoopConfiguration

hadoopConf.set("fs.swift.impl","org.apache.hadoop.fs.swift.snative.SwiftNativeFileSystem")
hadoopConf.set("fs.swift.service.auth.endpoint.prefix","/AUTH_")
hadoopConf.set("fs.swift.service.abc.http.port","443")
hadoopConf.set("fs.swift.service.abc.auth.url","https://auth.cloud.ovh.net/v2.0/tokens")
hadoopConf.set("fs.swift.service.abc.tenant","<TENANT NAME> or <PROJECT NAME>")
hadoopConf.set("fs.swift.service.abc.region","<REGION NAME>")
hadoopConf.set("fs.swift.service.abc.useApikey","false")
hadoopConf.set("fs.swift.service.abc.username","<USER NAME>")
hadoopConf.set("fs.swift.service.abc.password","<PASSWORD>")

https://github.com/mojtabaimani/spark-wordcount-swift-scala/blob/master/src/main/scala/com/ovh/example/SparkScalaApp.scala

...