Fermer

janvier 9, 2024

Lire les données Azure Eventhub sur DataFrame

Lire les données Azure Eventhub sur DataFrame


Lecture des données Azure EventHub dans DataFrame à l’aide d’Apache Spark – Scala

Apache Spark offre un moyen transparent d’ingérer et de traiter les données en streaming d’Azure EventHubs vers DataFrames. Dans ce didacticiel, nous passerons en revue les étapes d’installation et de configuration requises pour réaliser cette intégration.

Conditions préalables:

Avant de plonger dans le code, assurez-vous de disposer de la configuration et des autorisations nécessaires :

  • Connaissance de base de la configuration d’Event Hubs, de Key Vaults et de la gestion des secrets. (Inclus un aperçu général qui couvre les étapes initiales requises)
  • Instance Azure EventHub créée (dans cet exemple, nous utiliserons « myehub »).
  • Accédez à Azure Key Vault pour stocker et accéder en toute sécurité aux informations d’identification requises.
  • Connaissance de base de Scala, Apache Spark et Databricks Notebooks.

MyehubSeconde

1. Configuration de la configuration :

Commençons par définir les paramètres essentiels et importer les bibliothèques requises :

val eventHub = "myehub"
val namespaceName = "contosoehubns"
val sharedAccessKeyName = "test"
val environment = "dev"
val keyvault_name = "kv-test-01-dev"

// Retrieve the shared access key from Azure Key Vault
val sharedAccessKey = dbutils.secrets.get(scope = keyvault_name, key = "KEY")

// Import necessary Spark and Event Hubs libraries
import org.apache.spark.eventhubs.{ConnectionStringBuilder, EventHubsConf, EventPosition}
import org.apache.spark.sql.functions.{explode, split}
import org.apache.spark.sql.types.StringType  // Necessary for casting to StringType
import org.apache.spark.sql.Row

2. Création de la chaîne de connexion EventHub :

Construisez la chaîne de connexion à l’aide des informations fournies :

val connectionString = ConnectionStringBuilder()
  .setNamespaceName(namespaceName)
  .setEventHubName(eventHub)
  .setSasKeyName(sharedAccessKeyName)
  .setSasKey(sharedAccessKey)
  .build

// Define EventHubs configuration with starting position
val eventHubsConf = EventHubsConf(connectionString).setStartingPosition(EventPosition.fromStartOfStream)

3. Lecture des données EventHub dans DataFrame :

Maintenant, lisons les données de streaming d’EventHubs dans un DataFrame à l’aide des capacités de streaming structuré de Spark :

val df = spark
  .readStream
  .format("eventhubs")
  .options(eventHubsConf.toMap)
  .load()

// Display schema
df.schema
Schema Output:
Sortir
//Display EventHub Streaming data
display(df)

// Display filter data based on enqueuedTime
display(df.select( $"body".cast(StringType), $"partition", $"offset", $"sequenceNumber", $"enqueuedTime", $"publisher", $"partitionKey".cast(StringType), $"properties", $"systemProperties" ).filter("enqueuedTime >= '2023-06-14T00:47:33.093+0000'"))

Avec ces configurations et extraits de code, vous pouvez configurer en toute transparence Apache Spark pour lire les données en streaming d’Azure EventHubs dans un DataFrame. La sortie sans filtres donnerait un flux de données continu jusqu’à l’arrêt. Assurez-vous d’ajuster les paramètres en fonction de votre environnement Azure et de vos exigences spécifiques.

En tirant parti de la puissance du streaming structuré de Spark et de l’évolutivité d’Event Hubs, vous pouvez traiter et analyser efficacement les données en temps réel au sein de vos flux de travail Spark.

Configuration d’Azure Event Hubs :

  1. Connexion au portail Azure :
  2. Créer un espace de noms Event Hub :
    • Accédez à « Créer une ressource » > « Internet des objets » > « Espace de noms Event Hubs ».
    • Remplissez les détails nécessaires tels que l’abonnement, le groupe de ressources, le nom de l’espace de noms, la région, etc.
    • Une fois créé, vous pouvez accéder à votre espace de noms Event Hub.
  3. Créer un hub d’événements :
    • Dans l’espace de noms Event Hub, accédez à « Event Hubs ».
    • Cliquez sur « Ajouter » pour créer une nouvelle instance Event Hub.
    • Fournissez un nom pour Event Hub (par exemple, « myehub ») et configurez d’autres paramètres si nécessaire.
    • Après création, vous pouvez gérer votre Event Hub depuis cette interface.

Configuration d’Azure Key Vault :

  1. Créer un coffre de clés :
    • Dans le portail Azure, accédez à « Créer une ressource » > « Sécurité + Identité » > « Key Vault ».
    • Saisissez des détails tels que l’abonnement, le groupe de ressources, le nom de Key Vault, la région, etc.
    • Une fois créé, accédez à la ressource Key Vault.
  2. Ajouter des secrets à Key Vault :
    • Dans le menu Key Vault, allez dans « Secrets » et cliquez sur « Générer/Importer ».
    • Entrez les détails secrets, comme le nom et la valeur.
    • Assurez-vous que les politiques d’accès au secret sont correctement configurées pour permettre l’accès aux services ou aux utilisateurs prévus.

Lien Microsoft pour configurer les clés/secrets.

https://azuredevopslabs.com/labs/vstsextend/azurekeyvault/

Accès aux secrets depuis Key Vault :

  1. Accorder l’accès aux services/applications :
    • Définissez les stratégies d’accès pour les services qui doivent récupérer les secrets de Key Vault.
    • Par exemple, si vous avez besoin de Spark pour accéder aux secrets, vous accorderez les autorisations appropriées au principal du service Spark.
  2. Accès aux secrets par programmation :
    • Utilisez des SDK Azure ou des outils comme Azure CLI pour récupérer des secrets par programmation.
    • Par exemple, en Python, vous pouvez utiliser le azure-keyvault-secrets bibliothèque pour accéder aux secrets.






Source link