取消
顯示的結果
而不是尋找
你的意思是:

dbutils.secrets。讓- NoSuchElementException: None.get

Sandesh87
新的貢獻者三世

下麵的代碼執行一個“得到”從s3 api方法來檢索對象和寫數據。

當我用dbutils.secrets時問題就出現了。能得到所需的密鑰建立連接到s3

my_dataframe.rdd。foreachPartition(分區= > {val AccessKey = dbutils.secrets。得到(=“ADB_Scope”範圍,鍵=“AccessKey-ID”) val SecretKey = dbutils.secrets。得到(=“ADB_Scope”範圍,鍵=“AccessKey-Secret”)val creds = new BasicAWSCredentials(AccessKey, SecretKey) val clientRegion: Regions = Regions.US_EAST_1 val s3client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .withCredentials(new AWSStaticCredentialsProvider(creds)) .build() partition.foreach(x => { val objectKey = x.getString(0) val i = s3client.getObject(s3bucketName, objectKey).getObjectContent val inputS3String = IOUtils.toString(i, "UTF-8") val filePath = s"${data_lake_get_path}" val file = new File(filePath) val fileWriter = new FileWriter(file) val bw = new BufferedWriter(fileWriter) bw.write(inputS3String) bw.close() fileWriter.close() }) })

上述結果的錯誤:-

引起的:java.util。NoSuchElementException: None.get

在scala.None $ . get (Option.scala: 529)

在scala.None $ . get (Option.scala: 527)

在com.databricks.dbutils_v1。impl.SecretUtilsImpl.sc美元lzycompute (SecretUtilsImpl.scala: 24)

在com.databricks.dbutils_v1。impl.SecretUtilsImpl.sc(SecretUtilsImpl.scala: 24)

在com.databricks.dbutils_v1.impl.SecretUtilsImpl.getSecretManagerClient (SecretUtilsImpl.scala: 36)

com.databricks.dbutils_v1.impl.SecretUtilsImpl.getBytesInternal (SecretUtilsImpl.scala: 46)

com.databricks.dbutils_v1.impl.SecretUtilsImpl.get (SecretUtilsImpl.scala: 61)

當實際AccessKey秘密範圍值和SecretKey上麵的代碼工作正常傳遞。

如何使用dbutils.secrets這項工作。得到這鑰匙不暴露在代碼中?

1接受解決方案

接受的解決方案

Kaniz
社區經理
社區經理

嗨@Sandesh Puligundla,你隻需要以下兩行:

val AccessKey = dbutils.secrets。得到(=“ADB_Scope”範圍,鍵=“AccessKey-ID”) val SecretKey = dbutils.secrets。得到(=“ADB_Scope”範圍,鍵=“AccessKey-Secret”)

foreachpartition塊的外麵,所以這些函數將執行上下文中的司機和發送到工人節點。

在原帖子查看解決方案

2回答2

匿名
不適用

你好@Sandesh Puligundla——謝謝你的問題。謝謝你的耐心。我想把這一段時間,看看社區回應。掛緊!

Kaniz
社區經理
社區經理

嗨@Sandesh Puligundla,你隻需要以下兩行:

val AccessKey = dbutils.secrets。得到(=“ADB_Scope”範圍,鍵=“AccessKey-ID”) val SecretKey = dbutils.secrets。得到(=“ADB_Scope”範圍,鍵=“AccessKey-Secret”)

foreachpartition塊的外麵,所以這些函數將執行上下文中的司機和發送到工人節點。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map