Připojení k AmazonU S3
Tento článek vysvětluje, jak se připojit k AWS S3 z Azure Databricks.
Přístup k kontejnerům S3 pomocí identifikátorů URI a klíčů AWS
Vlastnosti Sparku můžete nastavit tak, aby nakonfigurovali klíče AWS pro přístup k S3.
Databricks doporučuje používat omezení tajných klíčů pro ukládání všech přihlašovacích údajů. Uživatelům, instančním objektům a skupinám v pracovním prostoru můžete udělit přístup ke čtení oboru tajných klíčů. Tím se chrání klíč AWS a zároveň umožňuje uživatelům přístup k S3. Pokud chcete vytvořit obor tajných kódů, přečtěte si téma Správa oborů tajných kódů.
Přihlašovací údaje mohou být vymezeny na cluster nebo poznámkový blok. K ochraně přístupu k S3 můžete použít řízení přístupu ke clusteru i řízení přístupu k poznámkovému bloku. Podívejte se na výpočetní oprávnění a spolupráci pomocí poznámkových bloků Databricks.
Pokud chcete nastavit vlastnosti Sparku, použijte v konfiguraci Sparku clusteru následující fragment kódu a nastavte klíče AWS uložené v oborech tajných kódů jako proměnné prostředí:
AWS_SECRET_ACCESS_KEY={{secrets/scope/aws_secret_access_key}}
AWS_ACCESS_KEY_ID={{secrets/scope/aws_access_key_id}}
Ze S3 pak můžete číst pomocí následujících příkazů:
aws_bucket_name = "my-s3-bucket"
df = spark.read.load(f"s3a://{aws_bucket_name}/flowers/delta/")
display(df)
dbutils.fs.ls(f"s3a://{aws_bucket_name}/")
Přístup k S3 s opensourcovými možnostmi Hadoopu
Databricks Runtime podporuje konfiguraci systému souborů S3A pomocí opensourcových možností Hadoopu. Můžete nakonfigurovat globální vlastnosti a vlastnosti jednotlivých kontejnerů.
Globální konfigurace
# Global S3 configuration
spark.hadoop.fs.s3a.aws.credentials.provider <aws-credentials-provider-class>
spark.hadoop.fs.s3a.endpoint <aws-endpoint>
spark.hadoop.fs.s3a.server-side-encryption-algorithm SSE-KMS
Konfigurace podle kbelíku
Vlastnosti jednotlivých kbelíků nakonfigurujete pomocí syntaxe spark.hadoop.fs.s3a.bucket.<bucket-name>.<configuration-key>
. To vám umožní nastavit kontejnery s různými přihlašovacími údaji, koncovými body atd.
Kromě globálního nastavení S3 můžete například nakonfigurovat každý kbelík jednotlivě pomocí následujících klíčů:
# Set up authentication and endpoint for a specific bucket
spark.hadoop.fs.s3a.bucket.<bucket-name>.aws.credentials.provider <aws-credentials-provider-class>
spark.hadoop.fs.s3a.bucket.<bucket-name>.endpoint <aws-endpoint>
# Configure a different KMS encryption key for a specific bucket
spark.hadoop.fs.s3a.bucket.<bucket-name>.server-side-encryption.key <aws-kms-encryption-key>
Zastaralé vzory ukládání dat a přístupu k datům v Azure Databricks
Následující vzory úložiště jsou zastaralé:
- Databricks už nedoporučuje připojení externích umístění dat k systému souborů Databricks. Viz Připojení cloudového úložiště objektů v Azure Databricks.
Důležité
- Systém souborů S3A umožňuje ukládání do mezipaměti ve výchozím nastavení a vydává prostředky v souboru FileSystem.close(). Chcete-li zabránit jiným podprocesům pomocí odkazu na systém souborů v mezipaměti nesprávně, nepoužívejte explicitně 'FileSystem.close().
- Systém souborů S3A při zavírání výstupního datového proudu neodebere značky adresáře. Starší aplikace založené na verzích Hadoop, které neobsahují HADOOP-13230 , je můžou chybně interpretovat jako prázdné adresáře, i když jsou uvnitř souborů.