連接到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)dbutils。fs。ls(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可以誤解他們即使裏麵有文件為空目錄。