Utilisation de itc_utils avec votre propre code

Vous pouvez utiliser les fonctions fournies par itc_utils pour étendre le code qui utilise la pyarrow bibliothèque. Comme itc_utils est basé sur pyarrow, vous pouvez sélectionner des fonctions spécifiques de itc_utils et les intégrer à votre pyarrow code.

Remarque :

La itc_utils bibliothèque propose des fonctions d'aide qui vous permettent de rendre vos programmes plus lisibles. Cette bibliothèque peut être supprimée à tout moment par IBM si cela est jugé nécessaire, et ses fonctionnalités peuvent être modifiées sans préavis.

Les fonctions suivantes peuvent faciliter le développement du code.

  • Fonctions permettant la création de descripteurs de vol :

    • get_data_request() : transforme un dictionnaire de type « Python » contenant des ressources nommées en la requête requise par Flight service
    • get_flight_cmd() : sérialise un dictionnaire de type « Python » en une chaîne JSON
    • get_flight_descriptor() : crée un objet « pyarrow.flight.FlightDescriptor » prêt à l'emploi à partir d'un dictionnaire « Python »
  • Fonctions d'instanciation et d'authentification du client :

  • Fonctions de lecture des données

    • get_flight_info() : récupère un pyarrow.flight.FlightInfo objet correspondant au dictionnaire « Python »
    • read_pandas_and_concat() : lit les données de tous les points de terminaison et les charge dans un seul pandas.DataFrame

get_data_request()

La fonction get_data_request() transforme un dictionnaire de type « Python » contenant les éléments connection_name, connected_data_name ou data_name en un dictionnaire de type « Python » représentant une requête de type « Flight service » contenant les éléments asset_id, et project_id ou space_id.

Le résultat peut servir d'argument pour d'autres fonctions itc_utils de bibliothèque, par exemple get_flight_descriptor().

Exemples :

  • Avec l'article connection_name:

    connection_data_request = {
        'connection_name': """MyConnection""",
        'interaction_properties': {
            'row_limit': 5000,
            'schema_name': '<schema>',
            'table_name': '<table>'
        }
    }
    flightRequest = itcfs.get_data_request(nb_data_request=connection_data_request)
    
  • Avec l'article connected_data_name:

    connected_asset_data_request = {
        'connected_data_name': """NameOfConnectedAsset""",
        'interaction_properties': {
            #'row_limit': 5000
        }
    }
    flightRequest = itcfs.get_data_request(nb_data_request=connected_asset_data_request)
    
  • Avec l'article data_name:

    CSV_data_request = {
        'data_name': """little.csv""",
        'interaction_properties': {
            #'row_limit': 500,
            'infer_schema': 'true',
            'infer_as_varchar': 'false'
            }
    }
    flightRequest = itcfs.get_data_request(nb_data_request=CSV_data_request)
    

get_flight_cmd()

La fonction get_flight_cmd() transforme un dictionnaire Python, représentant une requête Flight service, en une chaîne JSON. Cette fonction est utile dans les notebooks Spark, car le Spark Flight Connector attend un fichier cmd. Vous pouvez également utiliser cette fonction dans votre propre pyarrow code pour obtenir une adresse valide cmd pour Flight service.

Le résultat de la get_flight_cmd() fonction peut servir de donnée d'entrée pour créer un pyarrow.flight.FlightDescriptor.

Vous pouvez utiliser cette commande avec des paramètres nb_data_request nommés ou data_request.

Si vous utilisez nb_data_request, les éléments du connection_namedictionnaire, connected_data_name ou data_name sont convertis en un asset_id, et project_id ou space_id avant que le dictionnaire ne soit transformé en une chaîne JSON.

Si vous utilisez data_request, le dictionnaire est converti tel quel en une chaîne JSON.

Exemples :

  • Paramètre nb_data_request nommé avec élément de connection_namedictionnaire :

    MyConnection_data_request = {
        'connection_name': """MyConnection""",
        'interaction_properties': {
            'row_limit': 5000,
            'schema_name': '<schema>',
            'table_name': '<table>'
        }
    }
    cmd = itcfs.get_flight_cmd(nb_data_request=MyConnection_data_request)
    
  • Paramètre nommé data_ request :

    My_flight_request = {
        'asset_id': '<asset_id>',
        'project_id': '<project_id>',
        'interaction_properties': {
            'row_limit': 5000,
            'schema_name': '<schema>',
            'table_name': '<table>'
        }
    }
    cmd = itcfs.get_flight_cmd(data_request=My_flight_request)
    

get_flight_descriptor()

La fonction get_flight_descriptor() transforme un dictionnaire de type « Python », représentant une requête « Flight service », en un pyarrow.flight.FlightDescriptor.

Comme indiqué dans get_flight_cmd[...], vous pouvez utiliser cette commande avec les paramètres nb_data_request nommés [...] data_request.

Si vous utilisez nb_data_request, les entrées du connection_namedictionnaire, connected_data_name ou data_name sont résolues en un asset_id, et project_id ou space_id avant que le dictionnaire ne soit converti en descripteur de vol, à condition que les noms spécifiés soient uniques dans l'espace du projet ou du déploiement.

Si vous utilisez data_request, le dictionnaire est converti tel quel en un descripteur de vol.

Exemple :

MyConnection_data_request = {
    'connection_name': """MyConnection""",
    'interaction_properties': {
        'row_limit': 5000,


       'schema_name': '<schema>',
        'table_name': '<table>'
    }
}

flightDescriptor = itcfs.get_flight_descriptor(nb_data_request=MyConnection_data_request, wslib=None)

get_flight_service_url()

La fonction get_flight_service_url() renvoie le point de terminaison configuré de Flight service.

Exemple :

itcfs.get_flight_service_url()

get_flight_client()

La fonction get_flight_client() renvoie un client de vol prêt à l'emploi pointant vers l' Flight service URL, tel qu'il a été configuré ou fourni. Cette méthode permet également de s'authentifier auprès de Flight service en utilisant le jeton utilisateur par défaut ou un jeton fourni.

Exemple :

flightClient = itcfs.get_flight_client()

Vous pouvez utiliser cette commande avec le paramètre url pour spécifier un autre point de terminaison d' Flight service, et avec le paramètre bearer_token pour utiliser un jeton Bearer existant.

Exemple :

flightClient = itcfs.get_flight_client(url='<flight_service_url>', bearer_token='<bearer_token>')

TokenClientAuthHandler()

Vous pouvez utiliser une instance de TokenClientAuthHandler la classe pour vous authentifier auprès d'une pyarrow.flight.FlightClient instance de. Flight service nécessite un jeton de porteur pour l'authentification. Pour créer une instance de l' TokenClientAuthHandler,, vous pouvez utiliser un jeton d'utilisateur existant ou un jeton « bearer ».

  • Exemple d'appel par défaut TokenClientAuthHandler sans aucun paramètre, utilisant le jeton d'authentification de l'environnement :

    authHandler = itcfs.TokenClientAuthHandler()
    
  • Exemple d'un TokenClientAuthHandler qui utilise un jeton créé par le service d'authentification :

    userToken = '<your_user_token>'
    authHandler = itcfs.TokenClientAuthHandler(token=userToken)
    
  • Exemple d'un TokenClientAuthHandler qui utilise un jeton de support existant :

    bearerToken = 'Bearer <your_bearer_token>'
    authHandler = itcfs.TokenClientAuthHandler(bearer_token=bearerToken)
    

get_flight_info()

La fonction get_flight_info()appelle ` Flight service ` pour obtenir un pyarrow.flight.FlightInfo objet contenant les informations nécessaires à la lecture des données.

get_flight_info() attend un paramètre de position, une instance de a pyarrow.flight.FlightClient, ainsi que l'un des paramètres nb_data_request nommés ou data_request. La différence entre ces paramètres et les données d'entrée attendues est décrite dans les sections consacrées aux fonctions get_flight_cmd() et get_flight_descriptor().

Exemple :

My_flight_request = {
    'asset_id': '<asset_id>',
    'project_id': '<project_id>',
    'interaction_properties': {
        'row_limit': 5000,
        'schema_name': '<schema>',
        'table_name': '<table>'
    }
}
flightClient = itcfs.get_flight_client()
flightInfo = itcfs.get_flight_info(flightClient, data_request=My_flight_request)

read_pandas_and_concat()

La fonction read_pandas_and_concat()lit les données de tous les nœuds de l'objet « flight info » et concatène les partitions de données en un seul fichier pandas.DataFrame.

read_pandas_and_concat() nécessite deux paramètres de position, à savoir une instance de a pyarrow.flight.FlightClient et une instance de b pyarrow.flight.FlightInfo object.

Exemple :

df = itcfs.read_pandas_and_concat(flightClient, flightInfo)

En savoir plus