Utilizzo di itc_utils con il proprio codice
È possibile utilizzare le funzioni fornite da itc_utils per estendere il codice che utilizza la pyarrow libreria. Poiché itc_utils si basa su pyarrow, puoi selezionare funzioni specifiche di itc_utils e integrarle nel tuo pyarrow codice.
La itc_utils libreria mette a disposizione funzioni di supporto che puoi utilizzare per rendere i tuoi programmi più leggibili. IBM. può rimuovere questa libreria in qualsiasi momento, qualora lo ritenga necessario, e le funzionalità possono essere modificate senza preavviso.
Le seguenti funzioni possono semplificare lo sviluppo del codice.
Funzioni per la creazione di descrittori di volo:
- get_data_request() : converte un dizionario di tipo ` Python ` contenente risorse con nome in una richiesta conforme al formato richiesto da ` Flight service `
- get_flight_cmd() : serializza un dizionario di tipo « Python » in una stringa JSON
- get_flight_descriptor() : crea un oggetto ` pyarrow.flight.FlightDescriptor ` pronto all'uso a partire da un dizionario ` Python `
Funzioni per l'istanziazione e l'autenticazione dei client:
- get_flight_service_url() : recupera l'URL predefinito Flight service URL
- get_flight_client() : crea un client di volo ed esegue l'autenticazione su Flight service utilizzando il token utente corrente dell'ambiente
- TokenClientAuthHandler( ) : esegue l'autenticazione su Flight service
Funzioni per la lettura dei dati
- get_flight_info() : restituisce un
pyarrow.flight.FlightInfooggetto per un dizionario di tipo ` Python ` - read_pandas_and_concat() : legge i dati da tutti gli endpoint e li carica in un unico
pandas.DataFrame
- get_flight_info() : restituisce un
get_data_request()
La funzione get_data_request() trasforma un dizionario di tipo ` Python `, connected_data_name contenente connection_name gli elementi `,` o `,`, data_name in un dizionario di tipo ` Python ` che asset_idrappresenta una richiesta di tipo ` Flight service `, contenente gli elementi `,` e `,` o project_idspace_id `,`.
Il risultato può essere utilizzato come argomento per altre funzioni itc_utils della libreria, ad esempio get_flight_descriptor().
Esempi:
Con articolo
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)Con articolo
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)Con articolo
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 funzione get_flight_cmd() trasforma un dizionario di tipo ` Python `, che rappresenta una richiesta ` Flight service `, in una stringa JSON. Questa funzione è utile nei notebook Spark perché Spark Flight Connector richiede un file cmd. Puoi anche utilizzare questa funzione nel tuo pyarrow codice per ottenere un URL valido cmd per Flight service.
Il risultato della get_flight_cmd() funzione può essere utilizzato come dato di input per creare un pyarrow.flight.FlightDescriptor.
È possibile utilizzare questo comando con parametri nb_data_request denominati o data_request.
Se si utilizza nb_data_request, le voci del dizionario connection_name, connected_data_name o data_name vengono risolte in un asset_id, e project_id o space_id prima che il dizionario venga convertito in una stringa JSON.
Se si utilizza data_request, il dizionario viene convertito in una stringa JSON così com'è.
Esempi:
Parametro
nb_data_requestdenominato con voce delconnection_namedizionario: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)Parametro con
data_ requestnome: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 funzione get_flight_descriptor() trasforma un dizionario di tipo ` Python `, che rappresenta una richiesta di tipo ` Flight service `, in un pyarrow.flight.FlightDescriptor.
Come descritto in get_flight_cmd, è possibile utilizzare questo comando con i parametri nb_data_request o data_request.
Se si utilizza nb_data_request, le voci del dizionario connection_name, connected_data_name o data_name vengono risolte in un asset_id, e project_id o space_id prima che il dizionario venga trasformato in un descrittore di volo, a condizione che i nomi specificati siano univoci all'interno del progetto o dello spazio di distribuzione.
Se si utilizza data_request, il dizionario viene trasformato in un descrittore di volo così com'è.
Esempio:
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 funzione get_flight_service_url() restituisce l'endpoint configurato di Flight service.
Esempio:
itcfs.get_flight_service_url()
get_flight_client()
La funzione get_flight_client() restituisce un client di volo pronto all'uso che punta all' Flight service URL configurato o fornito. Questo metodo esegue inoltre l'autenticazione su Flight service utilizzando il token utente predefinito o quello fornito.
Esempio:
flightClient = itcfs.get_flight_client()
È possibile utilizzare questo comando con il parametro url per specificare un endpoint alternativo di tipo " Flight service " e con il parametro bearer_token per utilizzare un token bearer esistente.
Esempio:
flightClient = itcfs.get_flight_client(url='<flight_service_url>', bearer_token='<bearer_token>')
TokenClientAuthHandler()
È possibile utilizzare un'istanza della TokenClientAuthHandler classe per autenticarsi con pyarrow.flight.FlightClient un'istanza di. Flight service richiede un token al portatore per l'autenticazione. Per creare un'istanza dell' TokenClientAuthHandler,, è possibile utilizzare un token utente esistente oppure un token bearer.
Esempio di comando predefinito
TokenClientAuthHandlersenza parametri che utilizza il token di autenticazione dall'ambiente:authHandler = itcfs.TokenClientAuthHandler()Esempio di un
TokenClientAuthHandlerche utilizza un token creato dal servizio di autenticazione:userToken = '<your_user_token>' authHandler = itcfs.TokenClientAuthHandler(token=userToken)Esempio di un
TokenClientAuthHandlerche utilizza un token di tipo bearer esistente:bearerToken = 'Bearer <your_bearer_token>' authHandler = itcfs.TokenClientAuthHandler(bearer_token=bearerToken)
get_flight_info()
La funzione get_flight_info()chiama ` Flight service ` per ricevere un pyarrow.flight.FlightInfo oggetto contenente le informazioni necessarie alla lettura dei dati.
get_flight_info() richiede un parametro di posizione, un'istanza di a pyarrow.flight.FlightCliente uno dei parametri nb_data_request denominati o data_request. La differenza tra questi parametri e i dati di input previsti è descritta nelle sezioni relative alle funzioni get_flight_cmd() e get_flight_descriptor().
Esempio:
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 funzione read_pandas_and_concat()legge i dati da tutti gli endpoint presenti nell'oggetto delle informazioni di volo e unisce le partizioni di dati in un unico pandas.DataFramefile.
read_pandas_and_concat() richiede due parametri di posizione, ovvero un'istanza di a pyarrow.flight.FlightClient e una di pyarrow.flight.FlightInfo object.
Esempio:
df = itcfs.read_pandas_and_concat(flightClient, flightInfo)