Uso de itc_utils con tu propio código
Puedes utilizar las funciones que ofrece itc_utils para ampliar el código que utiliza la pyarrow biblioteca. Dado que itc_utils se basa en pyarrow, puedes seleccionar funciones específicas de itc_utils y combinarlas con tu pyarrow código.
La itc_utils biblioteca ofrece funciones auxiliares que puedes utilizar para que tus programas sean más fáciles de leer. IBM puede eliminar esta biblioteca en cualquier momento, si lo considera necesario, y las funciones pueden modificarse sin previo aviso.
Las siguientes funciones pueden simplificar el desarrollo del código.
Funciones para la creación de descriptores de vuelo:
- get_data_request() : transforma un diccionario de tipo « Python » con activos con nombre en la solicitud requerida por « Flight service »
- get_flight_cmd() : serializa un diccionario de tipo « Python » en una cadena JSON
- get_flight_descriptor() : crea un objeto ` pyarrow.flight.FlightDescriptor ` listo para usar a partir de un diccionario ` Python `
Funciones para la instanciación y la autenticación del cliente:
- get_flight_service_url() : obtiene la URL predeterminada Flight service URL
- get_flight_client() : crea un cliente de Flight y se autentica en Flight service utilizando el token de usuario actual del entorno
- TokenClientAuthHandler( ) : se autentica en Flight service
Funciones para leer datos
- get_flight_info() : obtiene un
pyarrow.flight.FlightInfoobjeto para un diccionario de tipo « Python » - read_pandas_and_concat() : lee los datos de todos los puntos finales y los carga en un único
pandas.DataFrame
- get_flight_info() : obtiene un
get_data_request()
La función get_data_request() transforma un diccionario de tipo ` Python ` con elementos connection_name`, connected_data_name ` o `,` data_name en un diccionario de tipo ` Python ` que representa una solicitud de tipo ` Flight service ` con elementos asset_id`,` y ` project_id ,` o space_id`,`.
El resultado se puede utilizar como entrada para otras funciones itc_utils de la biblioteca, por ejemplo get_flight_descriptor().
Ejemplos:
Con el artículo
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 el artículo
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 el artículo
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 función get_flight_cmd() transforma un diccionario de tipo ` Python `, que representa una solicitud de tipo ` Flight service `, en una cadena JSON. Esta función resulta útil en los cuadernos de Spark, ya que el Spark Flight Connector espera un archivo cmd. También puedes utilizar esta función en tu propio pyarrow código para obtener un valor válido cmd para Flight service.
El resultado de la get_flight_cmd() función puede utilizarse como entrada para crear un pyarrow.flight.FlightDescriptor.
Puedes utilizar este comando con parámetros con nombre nb_data_request o data_request.
Si utilizas nb_data_request, los elementos del diccionario connection_name, connected_data_name o data_name se sustituyen por un asset_id, y project_id o space_id antes de que el diccionario se convierta en una cadena JSON.
Si utilizas data_request, el diccionario se convierte tal cual en una cadena JSON.
Ejemplos:
Parámetro con nombre
nb_data_requestcon elemento de diccionarioconnection_name: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)Parámetro con nombre
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 función get_flight_descriptor() transforma un diccionario de tipo ` Python `, que representa una solicitud de tipo ` Flight service `, en un pyarrow.flight.FlightDescriptor...
Tal y como se describe en get_flight_cmd, puedes utilizar este comando con los parámetros nb_data_request denominados o data_request.
Si se utiliza nb_data_request, las entradas del diccionario connection_name, connected_data_name o data_name se resuelven como un asset_id, y project_id o space_id antes de que el diccionario se transforme en un descriptor de vuelo, siempre que los nombres especificados sean únicos en el proyecto o en el espacio de implementación.
Si utilizas data_request, el diccionario se transforma tal cual en un descriptor de vuelo.
Ejemplo:
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 función get_flight_service_url() devuelve el punto final configurado de Flight service.
Ejemplo:
itcfs.get_flight_service_url()
get_flight_client()
La función get_flight_client() devuelve un cliente de vuelo listo para usar que apunta al Flight service URL configurado o facilitado. Este método también se autentica en Flight service utilizando el token de usuario predeterminado o uno facilitado.
Ejemplo:
flightClient = itcfs.get_flight_client()
Puedes utilizar este comando con el parámetro url «named» para especificar un punto final alternativo de « Flight service », y con el parámetro bearer_token «named» para utilizar un token de portador ya existente.
Ejemplo:
flightClient = itcfs.get_flight_client(url='<flight_service_url>', bearer_token='<bearer_token>')
TokenClientAuthHandler()
Puedes utilizar una instancia de TokenClientAuthHandler la clase para autenticarte con una pyarrow.flight.FlightClient instancia de. Flight service requiere un token de portador para la autenticación. Para crear una instancia de la interfaz de programación de aplicaciones ( TokenClientAuthHandler, ), puedes utilizar un token de usuario ya existente o un token de portador.
Ejemplo de una llamada predeterminada
TokenClientAuthHandlersin parámetros que utiliza el token de autenticación del entorno:authHandler = itcfs.TokenClientAuthHandler()Ejemplo de un
TokenClientAuthHandlerque utiliza un token creado por el servicio de autenticación:userToken = '<your_user_token>' authHandler = itcfs.TokenClientAuthHandler(token=userToken)Ejemplo de un
TokenClientAuthHandlerque utiliza un token de portador ya existente:bearerToken = 'Bearer <your_bearer_token>' authHandler = itcfs.TokenClientAuthHandler(bearer_token=bearerToken)
get_flight_info()
La función get_flight_info()llama a ` Flight service ` para recibir un pyarrow.flight.FlightInfo objeto que contiene la información necesaria para leer los datos.
get_flight_info() espera un parámetro posicional, una instancia de a pyarrow.flight.FlightClienty uno de los parámetros con nombre nb_data_request o data_request. La diferencia entre estos parámetros y los datos de entrada esperados se describe en las secciones dedicadas a get_flight_cmd() y get_flight_descriptor().
Ejemplo:
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 función read_pandas_and_concat()lee los datos de todos los puntos finales del objeto de información de vuelo y concatena las particiones de datos en un único pandas.DataFrame.
read_pandas_and_concat() espera dos parámetros de posición: una instancia de a pyarrow.flight.FlightClient y una de pyarrow.flight.FlightInfo object.
Ejemplo:
df = itcfs.read_pandas_and_concat(flightClient, flightInfo)