O MaxFrame oferece um conjunto de APIs que vão além da interface padrão do pandas para gerenciar sessões, ler e gravar tabelas do MaxCompute, acionar computações distribuídas e recuperar resultados localmente.
Sessão
new_session
Código-fonte: new_session
new_session(
session_id: str = None,
default: bool = True,
new: bool = True,
odps_entry: Optional[ODPS] = None
)
Cria uma sessão do MaxFrame e conecta-se ao MaxCompute.
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
String |
Não |
None |
Identificador exclusivo da sessão. Se não especificado, o MaxFrame gera um automaticamente. Quando |
|
|
Boolean |
Não |
True |
Defina a sessão como padrão global. Se verdadeiro, chamadas subsequentes a |
|
|
Boolean |
Não |
True |
Crie uma nova sessão. Defina como False para conectar-se a uma sessão existente identificada por |
|
|
ODPS |
Sim |
— |
Objeto de entrada do MaxCompute. Consulte Criar um ponto de entrada do MaxCompute. |
Retorno: O objeto de sessão.
Exemplo
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/Saída
As funções a seguir leem dados do MaxCompute e gravam dados nele.
|
Função |
Descrição |
|
Lê uma tabela do MaxCompute em um DataFrame |
|
|
Execute uma consulta SQL e retorna os resultados como um DataFrame |
|
|
Grava um DataFrame em uma tabela do MaxCompute |
|
|
Salve um modelo XGBoost treinado no MaxCompute |
Como escolher entre read_odps_table e read_odps_query: Use read_odps_table para ler de uma tabela específica (com filtros opcionais de partição e coluna). Prefira read_odps_query quando precisar de filtragem no nível de SQL ou junções entre várias tabelas.
read_odps_table
Código-fonte: 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
)
Lê dados de uma tabela do MaxCompute e os retorna como um DataFrame. Se nenhuma coluna de índice for especificada, um RangeIndex será gerado.
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
String/Table |
Sim |
— |
Nome da tabela do MaxCompute ou objeto de tabela de onde os dados serão lidos. |
|
|
String/List |
Não |
None |
Partição ou lista de partições a ler. Formato: |
|
|
List |
Não |
None |
Colunas a ler. Formato: |
|
|
String/List |
Não |
None |
Uma ou mais colunas para usar como índice do DataFrame. |
|
|
ODPS |
Não |
None |
Objeto de entrada do MaxCompute. Consulte Criar um ponto de entrada do MaxCompute. |
|
|
Boolean |
Não |
None |
Lê colunas do tipo string em formato binário. |
|
|
Boolean |
Não |
False |
Quando verdadeiro e |
Retorno: Um objeto DataFrame.
Exemplo
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-fonte: 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
)
Execute uma consulta SQL do MaxCompute e retorna os resultados como um DataFrame. Se nenhuma coluna de índice for especificada, um RangeIndex será gerado.
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
String |
Sim |
— |
Instrução SQL do MaxCompute a executar. |
|
|
ODPS |
Não |
None |
Objeto de entrada do MaxCompute. Consulte Criar um ponto de entrada do MaxCompute. |
|
|
String/List |
Não |
None |
Uma ou mais colunas para usar como índice do DataFrame. |
|
|
Boolean |
Não |
None |
Lê colunas do tipo string em formato binário. |
Retorno: Um objeto DataFrame.
Exemplo
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-fonte: 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
)
Grava um DataFrame em uma tabela do MaxCompute. Se a tabela não existir, o MaxFrame a cria automaticamente.
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
String/Table |
Sim |
— |
Nome da tabela de destino ou objeto de tabela. |
|
|
String |
Não |
None |
Partição de destino. Exemplo: |
|
|
String/List |
Não |
None |
Colunas do DataFrame a usar como colunas de chave de partição na tabela de saída. |
|
|
Boolean |
Não |
False |
Sobrescreve os dados se a tabela ou partição já existir. |
|
|
Boolean |
Não |
False |
Quando verdadeiro, colunas do tipo objeto no DataFrame são gravadas como STRING. Pode ocorrer um erro se a conversão de tipo falhar. |
|
|
Boolean |
Não |
True |
Grava o índice do DataFrame como uma coluna na tabela de saída. |
|
|
String/List |
Não |
None |
Nome da coluna para o índice. O padrão é |
|
|
int |
Não |
None |
Ciclo de vida da tabela de saída em dias (inteiro positivo). Se a tabela já existir, este valor sobrescreve a configuração atual de ciclo de vida. |
Retorno: Um objeto DataFrame.
Exemplo
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
)
Salve um modelo XGBoost treinado em um job do MaxFrame como um objeto de modelo do MaxCompute. Chame .execute() no Scalar retornado para acionar a operação de salvamento.
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
String |
Sim |
— |
Nome do modelo. Se |
|
|
String |
Não |
None |
Versão do modelo. Se não especificada, o sistema gera uma versão automaticamente. |
|
|
String |
Não |
|
Schema ao qual o modelo pertence. |
|
|
String |
Não |
None |
Projeto ao qual o modelo pertence. |
|
|
String |
Não |
None |
Descrição do modelo. |
|
|
String |
Não |
None |
Descrição da versão do modelo. |
|
|
Boolean |
Não |
True |
Crie o modelo caso ele ainda não exista. |
|
|
Boolean |
Não |
False |
Defina a versão salva como a versão padrão do modelo. |
Retorno: Um objeto Scalar. Chame .execute() para acionar a operação de salvamento do modelo.
Exemplo
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()
Execução
execute
Código-fonte: execute
execute(
session: SessionType = None
)
Envia uma tarefa de processamento de dados ao MaxCompute para execução. Como o MaxFrame utiliza execução lazy, as operações em um DataFrame só são computadas quando você chama execute().
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
Session |
Não |
None |
Sessão a usar para execução. Se não especificada, a sessão padrão global criada por |
Retorno: None.
Exemplo
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()
Recuperação
fetch
Código-fonte: fetch
fetch(
session: SessionType = None
)
Recupera o resultado da computação do MaxCompute e o retorna como um DataFrame ou Series do pandas no seu ambiente local. Sempre chame execute() antes de fetch().
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Padrão |
Descrição |
|
|
Session |
Não |
None |
Sessão a usar para recuperar resultados. Se não especificada, a sessão padrão global criada por |
Retorno: Um DataFrame ou Series do pandas.
Exemplo
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]