Exemple de client de vol pour accéder à un produit de données
Après avoir souscrit à un produit de données en utilisant le Flight service comme méthode de livraison pour un ou plusieurs éléments, vous pouvez accéder par programme aux données à l'aide d'un client Arrow. Les bibliothèques Arrow sont disponibles pour C, C++, C#, Go, Java, JavaScript, Julia, MATLAB, Python, R et Ruby. Voir Apache Arrow pour obtenir des instructions sur l'installation des bibliothèques pour chaque langue. Cette rubrique fournit un Python pour accéder aux données d'un produit de données à partir d'un client Arrow.
Lorsque vous vous abonnez à un produit de données et que vous sélectionnez la livraison par l' Flight service, vous recevez un Flight URL et un Descriptor qui sont utilisés pour accéder au produit de données. Vous pouvez télécharger l' URL e de vol et le Descripteur à partir de la vignette d'abonnement qui se trouve sous Mes abonnements.
L' URL e de vol indique l'itinéraire externe de l' Flight service e pour votre environnement. Le descripteur contient un identifiant de bien et un identifiant de catalogue utilisés pour se connecter à une source de données afin de fournir les éléments d'un produit de données.
- Accéder à un produit de données avec un client Python Flight
- Accéder à un produit de données avec un client Python Flight et watsonx.ai
Exemple d'accès à un produit de données avec un client Flight Python
Suivez les étapes suivantes pour accéder à un produit de données avec un client Flight en Python :
Importer les bibliothèques nécessaires.
Importez les bibliothèques Flight Python ainsi que les bibliothèques request et json qui sont utilisées pour effectuer des requêtes API REST.
import pyarrow from pyarrow import flight import requests import jsonDéfinir un gestionnaire d'authentification.
class TokenClientAuthHandler(flight.ClientAuthHandler): def __init__(self, token): super().__init__() strToken = str(token) self.token = strToken.encode('utf-8') def authenticate(self, outgoing, incoming): outgoing.write(self.token) self.token = incoming.read() def get_token(self): return self.tokenAuthentifiez-vous auprès de Data Product Hub en utilisant l'API REST.
L'exemple suivant permet de s'authentifier auprès de Data Product Hub à l'aide de l'API d'authentification. Voir Authentification.
readClient = flight.FlightClient( FLIGHT_URL, override_hostname=FLIGHT_HOSTNAME, disable_server_verification=True) response = requests.post('https://' + CPD_CLUSTER_HOSTNAME + '/icp4d-api/v1/authorize', json={"username": USERNAME, "password": PASSWORD}, verify=False).json() token = 'Bearer ' + response['token'] readClient.authenticate(TokenClientAuthHandler(token), options=flight.FlightCallOptions(timeout=5.0))Les variables sont définies comme suit :
- FLIGHT_URL - L' URL s de vol qui s'affiche dans la vignette d'abonnement pour le produit de données
- FLIGHT_HOSTNAME - Le nom d'hôte du Flight URL
- CPD_CLUSTER_HOSTNAME - Le nom d'hôte de votre cluster Cloud Pak for Data
- NOM DE FAMILLE et 'MOT DE PASSE - Vos identifiants de connexion sur 'Data Product Hub
Voici un exemple d' Python, qui montre des valeurs d'échantillon pour les variables :
FLIGHT_URL='grpc+tls://fc-route-wkc.apps.mycluster.myorg.com:443'
FLIGHT_HOSTNAME='fc-route-wkc.apps.mycluster.myorg.com'
CPD_CLUSTER_HOSTNAME='cpd-wkc.apps.mycluster.myorg.com'
USERNAME='my_username'
PASSWORD='my_password'
REMARQUE : Si votre abonnement au produit de données ne contient pas l' URL, consultez cette solution possible : Flight service URL ne parvient pas à générer pour un abonnement.
Initialiser le client Flight.
flightDescriptor = flight.FlightDescriptor.for_command(json.dumps(DESCRIPTOR)) flightInfo = readClient.get_flight_info(flightDescriptor)La variable est définie comme suit :
DESCRIPTOR est le descripteur de vol en Python copié à partir de la tuile d'abonnement pour le produit de données.
Lire les données du tableau et les charger dans Pandas.
for endpoint in flightInfo.endpoints: reader = readClient.do_get(endpoint.ticket) table = reader.read_all()Vos données sont stockées dans la variable table et vous pouvez maintenant travailler avec les données dans votre application. Par exemple, vous pouvez charger le tableau dans un cadre de données Pandas en utilisant
table.to_pandas()pour travailler avec les données dans Pandas.table.to_pandas()
Exemple d'accès à un produit de données avec un client Python Flight et watsonx.ai
Si votre environnement comprend watsonx.ai Studio, qui inclut des outils pour travailler avec des carnets Jupyter, vous pouvez alors utiliser un résultat de livraison de vol directement dans un carnet sans exposer une route de vol externe.
Vous pouvez utiliser cet exemple lorsque votre ordinateur portable se trouve dans le même cluster Cloud Pak for Data que l'instance Data Product Hub.
Importer les bibliothèques nécessaires.
Importez les bibliothèques Flight Python ainsi que les bibliothèques request et json qui sont utilisées pour effectuer des requêtes API REST.
import pyarrow
from pyarrow import flight
import requests
import json
- Importer la bibliothèque d'aide itc_utils pour améliorer la lisibilité du code.
import itc_utils.flight_service as itcfs
flight_client = itcfs.get_flight_client()
- Initialiser le client Flight.
descriptor = {
"asset_id": "b571ebf2-XXXX-40c0-afc8-9385b099cf3f",
"catalog_id": "4d9148dc-XXXX-46cf-9db0-e62946d1413e"
}
flightDescriptor = flight.FlightDescriptor.for_command(json.dumps(descriptor))
flightInfo = flight_client.get_flight_info(flightDescriptor)
- Lisez les données du tableau.
for endpoint in flightInfo.endpoints:
reader = flight_client.do_get(endpoint.ticket)
table = reader.read_all()
- Chargez les données dans Pandas.
Vos données sont stockées dans la variable table et vous pouvez maintenant les utiliser dans votre application. Par exemple, vous pouvez charger le tableau dans un cadre de données Pandas.
table.to_pandas()