連接到Amazon S3

本文闡述了如何連接到AWS S3磚。

訪問S3 bucket uri和AWS鍵

你可以設置屬性來配置一個火花AWS訪問S3鍵。

磚建議使用秘密的範圍來存儲所有的憑證。能給予用戶、服務主體和組織您的工作區中獲得閱讀的秘密範圍。這保護了AWS關鍵,同時允許用戶訪問S3。創建一個秘密範圍,明白了秘密的範圍

憑證可以局限於集群或筆記本。使用兩個集群訪問控製和筆記本一起訪問控製保護訪問S3。看到集群訪問控製工作區對象訪問控製

設置火花屬性,使用以下代碼片段在集群的火花配置設置存儲在AWS鍵秘密範圍作為環境變量:

AWS_SECRET_ACCESS_KEY={{秘密/範圍/aws_secret_access_key}}AWS_ACCESS_KEY_ID={{秘密/範圍/aws_access_key_id}}

然後您可以讀取S3使用以下命令:

aws_bucket_name=“my-s3-bucket”df=火花負載(f“s3a: / /{aws_bucket_name}/花/δ/”)顯示(df)dbutilsfsls(f“s3a: / /{aws_bucket_name}/”)

訪問S3與開源Hadoop選項

磚運行時支持配置S3A文件係統使用開源Hadoop選項。您可以配置全局屬性和一桶屬性。

全局配置

#全球S3配置spark.hadoop.fs.s3a.aws.credentials。供應商< aws-credentials-provider-class >spark.hadoop.fs.s3a。端點< aws-endpoint >spark.hadoop.fs.s3a。server-side-encryption-algorithm SSE-KMS

一桶配置

你配置一桶屬性使用語法spark.hadoop.fs.s3a.bucket。< bucket名>。<配置鍵>。這允許您設置桶與不同的憑證,端點,等等。

例如,除了全球S3設置您可以配置每個桶分別使用以下鍵:

#設置身份驗證和端點為一個特定的桶spark.hadoop.fs.s3a.bucket。< bucket名> .aws.credentials。供應商< aws-credentials-provider-class >spark.hadoop.fs.s3a.bucket。< bucket名>。端點< aws-endpoint >#配置不同的公裏加密密鑰為一個特定的桶spark.hadoop.fs.s3a.bucket。< bucket名> .server-side-encryption。關鍵< aws-kms-encryption-key >

從磚棄用模式來存儲和訪問數據

以下是棄用存儲模式:

重要的

  • S3A文件係統啟用默認緩存和釋放資源的FileSystem.close ()”。為了避免其他線程使用緩存的引用文件係統錯誤,沒有明確使用“FileSystem.close ()。

  • S3A文件係統不移除目錄標記時關閉輸出流。遺留應用程序基於Hadoop版本不包括hadoop - 13230可以誤解他們即使裏麵有文件為空目錄。