Configure Cloud Object Storage (GCS, S3, Azure) for Data Lake
Ilum allows you to link GCS, S3, WASBSe HDFS storages to your clusters. Linking storage allows Ilum to automatically configure all your jobs to use your cloud data lakes seamlessly, eliminating the need for manual Spark parameter configuration.
Supported Storage Providers
| Provider | Digitare | Descrizione |
|---|---|---|
| Archiviazione cloud di Google | GCS | Native integration for GCP projects. |
| Amazon S3 | S3 | Standard S3 and S3-compatible storage support. |
| Archiviazione BLOB di Azure | WASBS/ABFS | Integration for Azure data lakes. |
| HDFS | HDFS | Connect to existing Hadoop Distributed File Systems. |
- Google Cloud Storage (GCS)
- Amazon S3
- Archiviazione BLOB di Azure
Google Cloud Storage (GCS)
Step 1: Create a GCS Bucket
Demo:
-
Create a Google Cloud Project
- Open Google Cloud Console e vai su Selettore di progetti / Manage Resources.
- Clic New Project / Create Project.
- Enter a Project name, choose Organization e Ubicazione.
-
Create a GCS Bucket
- In the Console, navigate to Archiviazione cloud → Buckets.
- Clic Creare.
- Enter a globally unique Bucket name (e.g.,
my-ilum-bucket) and select your Region.
notaRemember the bucket name you created - you will need it when adding this storage to Ilum.
-
Create a Service Account and JSON Key
- Vai a IAM & Admin → Service Accounts.
- Clic Create Service Account, fill in details, and grant Storage Admin roles.
- Click the created email, go to the Keys tab, and Create new key (JSON).
- Save the downloaded JSON file securely.
importantOrganization Policy Update: In new organizations, creating service account keys might be disabled by default. Contact your administrator if you cannot create keys.
Step 2: Add GCS to Ilum Cluster
Demo:
-
Navigate to Carichi → Ammassi → Redigere → Immagazzinamento → Add Storage.
-
Configure General Settings:
| Parameter | Value Example | Descrizione |
|---|---|---|
| Nome | my-gcs-storage | Unique name for this storage config. |
| Digitare | GCS | Select GCS provider. |
| Benna scintilla | my-ilum-bucket | Bucket for Spark logs/events. |
| Bucket di dati | my-ilum-bucket | Bucket for your data. |
- Configure GCS Authorization: Open your JSON key file and copy the values:
| Parameter | Source Key | Descrizione |
|---|---|---|
| Client Email | client_email | Service account email address. |
| Private Key | private_key | Full key including -----BEGIN.... |
| Private Key ID | private_key_id | Key ID string. |
- Clic Invia to save.
Amazon S3
The process for adding S3 storage is nearly identical to GCS. You will need to provide your AWS credentials (Access Key and Secret Key) instead of a JSON key file.
- Navigate to Carichi → Ammassi → Redigere → Immagazzinamento → Add Storage.
- Select S3 as the Digitare.
- Fill in the required fields:
| Parameter | Descrizione |
|---|---|
| Nome | Unique name for this storage config. |
| Access Key | Your AWS Access Key ID. |
| Secret Key | Your AWS Secret Access Key. |
| Region | AWS Region of your bucket (e.g., Stati Uniti-Est-1). |
| Endpoint | (Optional) Custom endpoint for S3-compatible storage (e.g., MinIO). |
Archiviazione BLOB di Azure
The process for adding Azure storage is nearly identical to GCS and S3. You will need your Azure Storage Account Name and Access Key.
- Navigate to Carichi → Ammassi → Redigere → Immagazzinamento → Add Storage.
- Select Azure (or WASBS) as the Digitare.
- Fill in the required fields:
| Parameter | Descrizione |
|---|---|
| Nome | Unique name for this storage config. |
| Account Name | Your Azure Storage Account name. |
| Account Key | Your Azure Storage Account Access Key. |
| Container | Name of the container to use. |
Step 3: Verify Connection
To ensure your storage is correctly configured, run a simple Spark job.
-
Create a Code Service:
- Vai a Carichi → Servizi → New Service +.
- Select Digitare:
Codice, Lingua:Scala, and your Grappolo.
-
Execute Test Code: Paste and run the following Scala code:
Test Storage Connection// Write test data
val dati = Seq(("Alice", 34), ("Bob", 45))
val Df = scintilla.createDataFrame(dati).toDF("nome", "age")
// Replace with your bucket path (e.g., gs://..., s3a://..., wasbs://...)
val sentiero = "gs://my-ilum-bucket/output/"
Df.scrivere.modo("sovrascrivere").format("csv").save(sentiero)
// Read back data
scintilla.leggere.format("csv").load(sentiero).mostrare() -
Check Results: If the job completes and displays the data table, your storage connection is active.
Common Issues & FAQ
Why do I get a "Permission Denied" error?
Causa: The Service Account or User doesn't have permissions to access the bucket. Soluzione:
- Go to your cloud provider's console (e.g., Google Cloud Console).
- Navigate to the bucket's Autorizzazioni scheda.
- Grant your service account the Storage Admin o Storage Object Admin role.
Why does it say "Bucket does not exist"?
Causa: The bucket name in your code doesn't match the actual bucket name, or the region is incorrect. Soluzione:
- Verify the bucket exists in your cloud console.
- Check that the bucket name in your code matches exactly (names are often case-sensitive).
Why do I get "Invalid credentials"?
Causa: The keys (JSON or Access Keys) were not copied correctly. Soluzione:
- Re-open your key file.
- Carefully copy the values again. For GCS, ensure you include the
-----INIZIA LA CHIAVE PRIVATA-----e-----TERMINA LA CHIAVE PRIVATA-----lines. - Re-save the storage configuration in Ilum.