Sdílet prostřednictvím


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é:

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ů.