MaxFrame propose un ensemble d'API complétant l'interface pandas standard. Ces outils permettent de gérer les sessions, de lire et d'écrire des tables MaxCompute, de déclencher des calculs distribués et de récupérer les résultats localement.
Session
new_session
Code source : new_session
new_session(
session_id: str = None,
default: bool = True,
new: bool = True,
odps_entry: Optional[ODPS] = None
)
Crée une session MaxFrame et établit la connexion avec MaxCompute.
Paramètres
|
Paramètre |
Type |
Obligatoire |
Valeur par défaut |
Description |
|
|
String |
Non |
None |
Identifiant unique de la session. Si vous ne le spécifiez pas, MaxFrame en génère un automatiquement. Lorsque |
|
|
Boolean |
Non |
True |
Définit la session comme valeur globale par défaut. Lorsqu'il est défini sur True, les appels suivants aux fonctions |
|
|
Boolean |
Non |
True |
Crée une nouvelle session. Définissez ce paramètre sur False pour vous connecter à une session existante identifiée par |
|
|
ODPS |
Oui |
— |
Objet d'entrée MaxCompute. Consultez la section Create a MaxCompute entry point. |
Renvoie : L'objet session.
Exemple
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)
Entrées/sorties
Les fonctions suivantes permettent de lire des données depuis MaxCompute et d'y écrire des données.
|
Fonction |
Description |
|
Lit une table MaxCompute dans un DataFrame |
|
|
Exécute une requête SQL et renvoie les résultats sous forme de DataFrame |
|
|
Écrit un DataFrame dans une table MaxCompute |
|
|
Enregistre un modèle XGBoost entraîné dans MaxCompute |
Choix entre `read_odps_table` et `read_odps_query` : Utilisez read_odps_table pour lire une table spécifique (avec des filtres optionnels sur les partitions et les colonnes). Privilégiez read_odps_query lorsque vous avez besoin de filtrages au niveau SQL ou de jointures entre plusieurs tables.
read_odps_table
Code source : 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
)
Lit les données d'une table MaxCompute et les renvoie sous forme de DataFrame. Si aucune colonne d'index n'est spécifiée, un RangeIndex est généré.
Paramètres
|
Paramètre |
Type |
Obligatoire |
Valeur par défaut |
Description |
|
|
String/Table |
Oui |
— |
Nom de la table MaxCompute ou objet table à partir duquel effectuer la lecture. |
|
|
String/List |
Non |
None |
Partition ou liste de partitions à lire. Format : |
|
|
List |
Non |
None |
Colonnes à lire. Format : |
|
|
String/List |
Non |
None |
Une ou plusieurs colonnes à utiliser comme index du DataFrame. |
|
|
ODPS |
Non |
None |
Objet d'entrée MaxCompute. Consultez la section Create a MaxCompute entry point. |
|
|
Boolean |
Non |
None |
Lit les colonnes de type chaîne au format binaire. |
|
|
Boolean |
Non |
False |
Lorsqu'il est défini sur True et que |
Renvoie : Un objet DataFrame.
Exemple
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
Code source : 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
)
Exécute une requête SQL MaxCompute et renvoie les résultats sous forme de DataFrame. Si aucune colonne d'index n'est spécifiée, un RangeIndex est généré.
Paramètres
|
Paramètre |
Type |
Obligatoire |
Valeur par défaut |
Description |
|
|
String |
Oui |
— |
Instruction SQL MaxCompute à exécuter. |
|
|
ODPS |
Non |
None |
Objet d'entrée MaxCompute. Consultez la section Create a MaxCompute entry point. |
|
|
String/List |
Non |
None |
Une ou plusieurs colonnes à utiliser comme index du DataFrame. |
|
|
Boolean |
Non |
None |
Lit les colonnes de type chaîne au format binaire. |
Renvoie : Un objet DataFrame.
Exemple
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
Code source : 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
)
Écrit un DataFrame dans une table MaxCompute. Si la table n'existe pas, MaxFrame la crée automatiquement.
Paramètres
|
Paramètre |
Type |
Obligatoire |
Valeur par défaut |
Description |
|
|
String/Table |
Oui |
— |
Nom de la table cible ou objet table. |
|
|
String |
Non |
None |
Partition cible. Exemple : |
|
|
String/List |
Non |
None |
Colonnes du DataFrame à utiliser comme clés de partition dans la table de sortie. |
|
|
Boolean |
Non |
False |
Écrase les données si la table ou la partition existe déjà. |
|
|
Boolean |
Non |
False |
Lorsqu'il est défini sur True, les colonnes de type objet du DataFrame sont écrites au format STRING. Une erreur peut survenir si la conversion de type échoue. |
|
|
Boolean |
Non |
True |
Écrit l'index du DataFrame en tant que colonne dans la table de sortie. |
|
|
String/List |
Non |
None |
Nom de colonne pour l'index. La valeur par défaut est |
|
|
int |
Non |
None |
Durée de vie de la table de sortie en jours (entier positif). Si la table existe déjà, cette valeur écrase le paramètre de durée de vie actuel. |
Renvoie : Un objet DataFrame.
Exemple
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
)
Enregistre un modèle XGBoost entraîné lors d'une tâche MaxFrame en tant qu'objet modèle MaxCompute. Appelez .execute() sur le Scalar renvoyé pour déclencher l'opération d'enregistrement.
Paramètres
|
Paramètre |
Type |
Obligatoire |
Valeur par défaut |
Description |
|
|
String |
Oui |
— |
Nom du modèle. Si |
|
|
String |
Non |
None |
Version du modèle. Si ce paramètre n'est pas spécifié, le système génère automatiquement une version. |
|
|
String |
Non |
|
Schema auquel appartient le modèle. |
|
|
String |
Non |
None |
Projet auquel appartient le modèle. |
|
|
String |
Non |
None |
Description du modèle. |
|
|
String |
Non |
None |
Description de la version du modèle. |
|
|
Boolean |
Non |
True |
Crée le modèle s'il n'existe pas déjà. |
|
|
Boolean |
Non |
False |
Définit la version enregistrée comme version par défaut du modèle. |
Renvoie : Un objet Scalar. Appelez .execute() pour déclencher l'opération d'enregistrement du modèle.
Exemple
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()
Exécution
execute
Code source : execute
execute(
session: SessionType = None
)
Soumet une tâche de traitement des données à MaxCompute pour exécution. MaxFrame utilisant une exécution différée (lazy execution), les opérations sur un DataFrame ne sont pas calculées tant que vous n'appelez pas execute().
Paramètres
|
Paramètre |
Type |
Obligatoire |
Valeur par défaut |
Description |
|
|
Session |
Non |
None |
Session à utiliser pour l'exécution. Si ce paramètre n'est pas spécifié, la session globale par défaut créée par |
Renvoie : None.
Exemple
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()
Récupération des résultats
fetch
Code source : fetch
fetch(
session: SessionType = None
)
Récupère le résultat du calcul depuis MaxCompute et le renvoie sous forme de pandas DataFrame ou Series dans votre environnement local. Appelez toujours execute() avant fetch().
Paramètres
|
Paramètre |
Type |
Obligatoire |
Valeur par défaut |
Description |
|
|
Session |
Non |
None |
Session à utiliser pour la récupération des résultats. Si ce paramètre n'est pas spécifié, la session globale par défaut créée par |
Renvoie : Un pandas DataFrame ou Series.
Exemple
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]