MaxFrame ofrece un conjunto de API que complementan la interfaz estándar de pandas para gestionar sesiones, leer y escribir tablas de MaxCompute, desencadenar cálculos distribuidos y recuperar resultados en el entorno local.
Sesión
new_session
Código fuente: new_session
new_session(
session_id: str = None,
default: bool = True,
new: bool = True,
odps_entry: Optional[ODPS] = None
)
Crea una sesión de MaxFrame y establece la conexión con MaxCompute.
Parámetros
|
Parameter |
Type |
Required |
Default |
Description |
|
|
String |
No |
None |
Identificador único de la sesión. Si no se especifica, MaxFrame genera uno automáticamente. Cuando |
|
|
Boolean |
No |
True |
Establece la sesión como predeterminada a nivel global. Si es True, las llamadas posteriores a |
|
|
Boolean |
No |
True |
Crea una nueva sesión. Establézcalo en False para conectarse a una sesión existente identificada por |
|
|
ODPS |
Sí |
— |
Objeto de entrada de MaxCompute. Consulte Create a MaxCompute entry point. |
Valor de retorno: El objeto de sesión.
Ejemplo
import os
from maxframe import new_session
from odps import ODPS
# Initialize the MaxCompute entry object.
# Store credentials in environment variables — do not hardcode them.
o = ODPS(
os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
project='your-default-project',
endpoint='your-endpoint',
)
# Create the MaxFrame session.
session = new_session(odps_entry=o)
Entrada/Salida
Las siguientes funciones permiten leer datos desde MaxCompute y escribirlos en dicho servicio.
|
Function |
Description |
|
Lee una tabla de MaxCompute y la carga en un DataFrame |
|
|
Ejecuta una consulta SQL y devuelve los resultados como un DataFrame |
|
|
Escribe un DataFrame en una tabla de MaxCompute |
|
|
Guarda un modelo XGBoost entrenado en MaxCompute |
Elección entre read_odps_table y read_odps_query: Utilice read_odps_table cuando necesite leer datos de una tabla específica (con filtros opcionales de partición y columna). Use read_odps_query cuando requiera filtrado a nivel de SQL o uniones entre varias tablas.
read_odps_table
Código fuente: read_odps_table
read_odps_table(
table_name: Union[str, Table],
partitions: Union[None, str, List[str]] = None,
columns: Optional[List[str]] = None,
index_col: Union[None, str, List[str]] = None,
odps_entry: ODPS = None,
string_as_binary: bool = None,
append_partitions: bool = False
)
Lee datos de una tabla de MaxCompute y los devuelve como un DataFrame. Si no se especifican columnas de índice, se genera un RangeIndex.
Parámetros
|
Parameter |
Type |
Required |
Default |
Description |
|
|
String/Table |
Sí |
— |
Nombre de la tabla de MaxCompute u objeto de tabla del cual se leerán los datos. |
|
|
String/List |
No |
None |
Partición o lista de particiones que se desean leer. Formato: |
|
|
List |
No |
None |
Columnas que se desean leer. Formato: |
|
|
String/List |
No |
None |
Una o más columnas para usar como índice del DataFrame. |
|
|
ODPS |
No |
None |
Objeto de entrada de MaxCompute. Consulte Create a MaxCompute entry point. |
|
|
Boolean |
No |
None |
Lee las columnas de tipo string en formato binario. |
|
|
Boolean |
No |
False |
Si es True y no se ha especificado |
Valor de retorno: Un objeto DataFrame.
Ejemplo
import maxframe.dataframe as md
df = md.read_odps_table(
'BIGDATA_PUBLIC_DATASET.data_science.maxframe_ml_100k_users',
index_col='user_id',
columns=['age', 'sex']
)
print(df.execute().fetch())
# Output:
# age sex
# user_id
# 1 24 M
# 2 53 F
# 3 23 M
# 4 24 M
# 5 33 F
# ... ... ..
# 939 26 F
# 940 32 M
# 941 20 M
# 942 48 F
# 943 22 M
#
# [943 rows x 2 columns]
read_odps_query
Código fuente: read_odps_query
read_odps_query(
query: str,
odps_entry: ODPS = None,
index_col: Union[None, str, List[str]] = None,
string_as_binary: bool = None
)
Ejecuta una consulta SQL de MaxCompute y devuelve los resultados como un DataFrame. Si no se especifican columnas de índice, se genera un RangeIndex.
Parámetros
|
Parameter |
Type |
Required |
Default |
Description |
|
|
String |
Sí |
— |
Sentencia SQL de MaxCompute que se va a ejecutar. |
|
|
ODPS |
No |
None |
Objeto de entrada de MaxCompute. Consulte Create a MaxCompute entry point. |
|
|
String/List |
No |
None |
Una o más columnas para usar como índice del DataFrame. |
|
|
Boolean |
No |
None |
Lee las columnas de tipo string en formato binario. |
Valor de retorno: Un objeto DataFrame.
Ejemplo
import maxframe.dataframe as md
df = md.read_odps_query(
'SELECT user_id, age, sex FROM `BIGDATA_PUBLIC_DATASET.data_science.maxframe_ml_100k_users`'
)
to_odps_table
Código fuente: to_odps_table
to_odps_table(
table: Union[Table, str],
partition: Optional[str] = None,
partition_col: Union[None, str, List[str]] = None,
overwrite: bool = False,
unknown_as_string: Optional[bool] = None,
index: bool = True,
index_label: Union[None, str, List[str]] = None,
lifecycle: Optional[int] = None
)
Escribe un DataFrame en una tabla de MaxCompute. Si la tabla no existe, MaxFrame la crea automáticamente.
Parámetros
|
Parameter |
Type |
Required |
Default |
Description |
|
|
String/Table |
Sí |
— |
Nombre de la tabla destino u objeto de tabla. |
|
|
String |
No |
None |
Partición destino. Ejemplo: |
|
|
String/List |
No |
None |
Columnas del DataFrame que se utilizarán como claves de partición en la tabla de salida. |
|
|
Boolean |
No |
False |
Sobrescribe los datos si la tabla o la partición ya existen. |
|
|
Boolean |
No |
False |
Si es True, las columnas de tipo object del DataFrame se escriben como STRING. Puede producirse un error si falla la conversión de tipos. |
|
|
Boolean |
No |
True |
Escribe el índice del DataFrame como una columna en la tabla de salida. |
|
|
String/List |
No |
None |
Nombre de la columna para el índice. De forma predeterminada es |
|
|
int |
No |
None |
Ciclo de vida de la tabla de salida en días (entero positivo). Si la tabla ya existe, este valor sobrescribe su configuración actual de ciclo de vida. |
Valor de retorno: Un objeto DataFrame.
Ejemplo
import maxframe.dataframe as md
df = md.read_odps_query(
'SELECT user_id, age, sex FROM `BIGDATA_PUBLIC_DATASET.data_science.maxframe_ml_100k_users`',
index_col='user_id'
)
df.to_odps_table('output_table', lifecycle=7)
to_odps_model
to_odps_model(
model_name: str,
model_version: str = None,
schema: str = None,
project: str = None,
description: Optional[str] = None,
version_description: Optional[str] = None,
create_model: bool = True,
set_default_version: bool = False
)
Guarda un modelo XGBoost entrenado en un trabajo de MaxFrame como un objeto de modelo de MaxCompute. Llame a .execute() sobre el objeto Scalar devuelto para iniciar la operación de guardado.
Parámetros
|
Parameter |
Type |
Required |
Default |
Description |
|
|
String |
Sí |
— |
Nombre del modelo. Si |
|
|
String |
No |
None |
Versión del modelo. Si no se especifica, el sistema genera una versión automáticamente. |
|
|
String |
No |
|
Esquema al que pertenece el modelo. |
|
|
String |
No |
None |
Proyecto al que pertenece el modelo. |
|
|
String |
No |
None |
Descripción del modelo. |
|
|
String |
No |
None |
Descripción de la versión del modelo. |
|
|
Boolean |
No |
True |
Crea el modelo si aún no existe. |
|
|
Boolean |
No |
False |
Establece la versión guardada como la versión predeterminada del modelo. |
Valor de retorno: Un objeto Scalar. Llame a .execute() para iniciar la operación de guardado del modelo.
Ejemplo
from maxframe.learn.contrib.xgboost import XGBClassifier
import maxframe.dataframe as md
# Train an XGBoost model.
X_df = md.DataFrame(X, columns=cols)
clf = XGBClassifier(n_estimators=10)
clf.fit(X_df, y)
# Save the model to MaxCompute.
clf.to_odps_model(
model_name='my_model',
# If project and schema are not specified separately,
# use the format: model_name='project.schema.my_model'
model_version='version1'
).execute()
Ejecución
execute
Código fuente: execute
execute(
session: SessionType = None
)
Envía una tarea de procesamiento de datos a MaxCompute para su ejecución. Dado que MaxFrame utiliza ejecución diferida, las operaciones sobre un DataFrame no se calculan hasta que se llama a execute().
Parámetros
|
Parameter |
Type |
Required |
Default |
Description |
|
|
Session |
No |
None |
Sesión que se utilizará para la ejecución. Si no se especifica, se usa la sesión predeterminada global creada mediante |
Valor de retorno: Ninguna.
Ejemplo
import maxframe.dataframe as md
df = md.read_odps_query(
'SELECT user_id, age, sex FROM BIGDATA_PUBLIC_DATASET.data_science.maxframe_ml_100k_users',
index_col='user_id'
)
df.execute()
Recuperación de resultados
fetch
Código fuente: fetch
fetch(
session: SessionType = None
)
Recupera el resultado del cálculo desde MaxCompute y lo devuelve como un DataFrame o Series de pandas en su entorno local. Siempre llame a execute() antes de invocar fetch().
Parámetros
|
Parameter |
Type |
Required |
Default |
Description |
|
|
Session |
No |
None |
Sesión que se utilizará para recuperar los resultados. Si no se especifica, se usa la sesión predeterminada global creada mediante |
Valor de retorno: Un DataFrame o Series de pandas.
Ejemplo
import maxframe.dataframe as md
df = md.read_odps_query(
'SELECT user_id, age, sex FROM `BIGDATA_PUBLIC_DATASET.data_science.maxframe_ml_100k_users`',
index_col='user_id'
)
result = df.execute().fetch()
print(result)
# Output:
# age sex
# user_id
# 1 24 M
# 2 53 F
# 3 23 M
# 4 24 M
# 5 33 F
# ... ... ..
# 939 26 F
# 940 32 M
# 941 20 M
# 942 48 F
# 943 22 M
#
# [943 rows x 2 columns]