Show Menu
ARGOMENTI×

Secure Spark Data Access SDK

Secure Spark​Data Access SDK è un kit di sviluppo software che consente la lettura e la scrittura di set di dati da Adobe Experience Platform.

Introduzione

Per poter accedere ai valori per effettuare chiamate all’SDK di protezione, devi completare l’esercitazione di autenticazione Spark​Data Access :
  • {ACCESS_TOKEN}
  • {API_KEY}
  • {IMS_ORG}
Tutte le risorse in Experience Platform sono isolate in sandbox virtuali specifiche. L’utilizzo dell’ Spark SDK richiede il nome e l’ID della sandbox in cui avrà luogo l’operazione:
  • {SANDBOX_NAME}
  • {SANDBOX_ID}
Per ulteriori informazioni sulle sandbox in Platform, consultate la documentazione sulla panoramica della sandbox.

Configurazione dell'ambiente

L' Spark SDK prevede che tu fornisca le credenziali nelle variabili di ambiente o nelle opzioni Origine dati.
Variable
Valore
SERVICE_TOKEN
Token di autorizzazione del servizio.
SERVICE_API_KEY
La chiave API del servizio. In genere corrisponde all'ID client IMS.
ORG_ID
Il valore {IMS_ORG} ID.
USER_TOKEN
Il vostro {ACCESS_TOKEN} valore.
Altri parametri di configurazione includono:
Variable
Valore
ENVIRONMENT_NAME
Ambiente a cui si sta tentando di connettersi. Può trattarsi di "dev", "stage" o "prod".
SANDBOX_NAME
Nome della sandbox a cui ci si sta connettendo.
In alternativa, oltre a ENVIRONMENT_NAME , puoi impostare una qualsiasi delle variabili di ambiente sopra riportate all'interno QSOption , come illustrato nell'esempio seguente:
val df = spark.read
    .format("com.adobe.platform.query")
    .option(QSOption.userToken, userToken) // same as env var USER_TOKEN
    .option(QSOption.imsOrg, "69A7534C5808063C0A494234@AdobeOrg") // same as env var ORG_ID
    .option(QSOption.apiKey, "acp_foundation_queryService") // same as env var SERVICE_API_KEY
    .option("mode", "interactive")
    .option("query", "SELECT * FROM csv10000row_xcm_001 LIMIT 10")
    .load()

Installazione

L’utilizzo dell’ Spark SDK richiede ottimizzazioni delle prestazioni che devono essere aggiunte al SparkSession . È possibile applicarli utilizzando uno dei seguenti metodi:
Applicatelo direttamente alla SparkSession corrente:
import com.adobe.platform.query.QSOptimizations
QSOptimizations.apply(spark)

Impostare la seguente conf prima o durante la creazione di SparkSession:
spark.sql.extensions = com.adobe.platform.query.QSSparkSessionExtensions

Lettura di un dataset

L’ Spark SDK supporta due modalità di lettura: interattivo e batch.
La modalità interattiva crea una connessione Java Database Connectivity (JDBC) a Query Service e ottiene risultati tramite un JDBC regolare ResultSet che viene automaticamente convertito in un DataFrame . Questa modalità funziona in modo simile al Spark metodo incorporato spark.read.jdbc() . Questa modalità è destinata solo ai set di dati di piccole dimensioni e richiede solo un token utente per l'autenticazione.
La modalità batch utilizza Query Serviceil comando COPY per generare set di risultati Parquet in una posizione condivisa. Questi file Parquet possono essere elaborati ulteriormente. Questa modalità richiede sia un token utente che un token di servizio con l' acp.foundation.catalog.credentials ambito.
Di seguito è riportato un esempio di lettura di un dataset in modalità interattiva:
val df = spark.read
      .format("com.adobe.platform.query")
      .option("user-token", {USER_TOKEN})
      .option("ims-org", {IMS_ORG})
      .option("api-key", {SERVICE_API_KEY})
      .option("mode", "interactive")
      .option("dataset-id", {DATASET_ID})
      .option("sandbox-name", {SANDBOX_NAME})
      .load()
df.show()

Analogamente, un esempio di lettura di un set di dati in modalità batch è riportato di seguito:
val df = spark.read
      .format("com.adobe.platform.query")
      .option("user-token", {USER_TOKEN})
      .option("service-token", {SERVICE_TOKEN})
      .option("ims-org", {IMS_ORG})
      .option("api-key", {SERVICE_API_KEY})
      .option("mode", "batch")
      .option("dataset-id", {DATASET_ID})
      .option("sandbox-name", {SANDBOX_NAME})
      .load()
df.show()

SELEZIONARE le colonne dal dataset

df = df.select("column-a", "column-b").show()

Clausola DISTINCT

La clausola DISTINCT consente di recuperare tutti i valori distinti a livello di riga/colonna, rimuovendo tutti i valori duplicati dalla risposta.
Di seguito è riportato un esempio di utilizzo della distinct() funzione:
df = df.select("column-a", "column-b").distinct().show()

Clausola WHERE

L’ Spark SDK consente due metodi per filtrare: Utilizzo di un'espressione SQL o filtraggio attraverso le condizioni.
Di seguito è riportato un esempio di utilizzo di queste funzioni di filtro:

Espressione SQL

df.where("age > 15")

Condizioni di filtro

df.where("age" > 15 || "name" = "Steve")

Clausola ORDER BY

La clausola ORDER BY consente di ordinare i risultati ricevuti in base a una colonna specificata in un ordine specifico (crescente o decrescente). Nell’ Spark SDK, questa operazione viene eseguita utilizzando la sort() funzione.
Di seguito è riportato un esempio di utilizzo della sort() funzione:
df = df.sort($"column1", $"column2".desc)

Clausola LIMIT

La clausola LIMIT consente agli utenti di limitare il numero di record ricevuti dall'insieme di dati.
Di seguito è riportato un esempio di utilizzo della limit() funzione:
df = df.limit(100)

Scrittura in un dataset

L' Spark SDK supporta la scrittura di set di dati. Gli utenti dovranno innanzitutto recuperare un dataset precedente per scrivere in un nuovo dataset.
val df = spark.read
      .format("com.adobe.platform.query")
      .option("user-token", userToken)
      .option("ims-org", "{IMS_ORG}")
      .option("api-key", "{API_KEY}")
      .option("mode", "interactive")
      .option("dataset-id", "{DATASET_ID}")
      .load()

    df.write
      .format("com.adobe.platform.query")
      .option("user-token", {USER_TOKEN})
      .option("service-token", {SERVICE_TOKEN})
      .option("ims-org", "{IMS_ORG_ID})
      .option("api-key", "{API_KEY}")
      .option("create-dataset", "{DATASET_ID}")
      .save()