Biblioteca Snowpark Checkpoints: coletores¶
O pacote Python do Snowpark Checkpoints oferece uma série de funcionalidades para dar suporte à validação de cargas de trabalho migradas. Esta seção descreve os principais recursos e funcionalidades incluídos no pacote, juntamente com orientações sobre como usá-los de forma eficaz.
Coleta de informações sobre o seu código PySpark¶
O pacote snowpark-checkpoints-collectors
oferece uma função para extrair informações do site PySpark DataFrames. Em seguida, podemos usar esses dados para validar com o Snowpark DataFrames convertido para garantir a equivalência comportamental.
Use a função a seguir para inserir um novo ponto de coleta de ponto de verificação:
Assinatura da função:
def collect_dataframe_checkpoint(df: SparkDataFrame,
checkpoint_name: str,
sample: Optional[float],
mode: Optional[CheckpointMode],
output_path: Optional[str]) -> None:
Parâmetros de função:
df: o PySpark DataFrame.
checkpoint_name: o nome do ponto de verificação. Começa com uma letra (A-Z, a-z) ou um sublinhado (_) e contém apenas letras, sublinhados e dígitos decimais (0-9).
sample: (opcional) o tamanho da amostra. O valor padrão é 1,0 (PySpark DataFrame inteiro) em um intervalo de 0 a 1,0.
mode: (opcional) o modo de execução. As opções são
SCHEMA
eDATAFRAME
. O valor padrão éSCHEMA
.output_path: (opcional) o caminho de saída para salvar o ponto de verificação. O valor padrão é o diretório de trabalho atual.
O processo de coleta gera um arquivo de saída, chamado checkpoint_collection_result.json
, com as informações sobre o resultado de cada ponto de coleta. É um arquivo JSON e contém as seguintes informações:
Um carimbo de data/hora em que o ponto de coleta foi iniciado.
O caminho relativo do arquivo onde está o ponto de coleta.
A linha de código do arquivo onde está o ponto de coleta.
O nome do ponto de verificação do ponto de coleta.
O resultado do ponto de coleta (falha ou aprovação).
Modo de dados coletados de inferência de esquema (esquema)¶
Esse é o modo padrão, que utiliza a inferência de esquema do Pandera para obter os metadados e as verificações que serão avaliadas para o DataFrame especificado. Esse modo também coleta dados personalizados das colunas do DataFrame com base no tipo PySpark.
Os dados e verificações da coluna são coletados com base no tipo PySpark da coluna (veja as tabelas abaixo). Para qualquer coluna, independentemente de seu tipo, os dados personalizados coletados incluirão o nome da coluna, o tipo da coluna, anulável, a contagem de linhas, a contagem de linhas não nulas e a contagem de linhas nulas.
Tipo de coluna |
Dados personalizados coletados |
---|---|
Numérico ( |
O valor mínimo. O valor máximo. O valor médio. A precisão decimal (no caso do tipo inteiro, o valor é zero). O desvio padrão. |
Data |
O valor mínimo. O valor máximo. O formato da data: %Y-%m-%d |
DayTimeIntervalType e YearMonthIntervalType |
O valor mínimo. O valor máximo. |
Carimbo de data/hora |
O valor mínimo. O valor máximo. O formato da data: %Y-%m-%dH:%M:%S |
Carimbo de data/hora ntz |
O valor mínimo. O valor máximo. O formato da data: %Y-%m-%dT%H:%M:%S%z |
Cadeia de caracteres |
O valor do comprimento mínimo. O valor do comprimento máximo. |
Char |
PySpark trata qualquer literal como um tipo de cadeia de caracteres, portanto, char não é um tipo válido. |
Varchar |
PySpark trata qualquer literal como um tipo de cadeia de caracteres, portanto, Varchar não é um tipo válido. |
Decimal |
O valor mínimo. O valor máximo. O valor médio. A precisão decimal. |
Matriz |
O tipo do valor. Se permitido, nulo como um elemento. A proporção de valores nulos. O tamanho máximo da matriz. O tamanho mínimo da matriz. O tamanho médio das matrizes. Se todas as matrizes tiverem o mesmo tamanho. |
Binário |
O tamanho máximo. O tamanho mínimo. O tamanho médio. Se todos os elementos tiverem o mesmo tamanho. |
Mapa |
O tipo da chave. O tipo do valor. Se permitido, nulo como um valor. A proporção de valores nulos. O tamanho máximo do mapa. O tamanho mínimo do mapa. O tamanho médio do mapa. Se todos os mapas tiverem o mesmo tamanho. |
Nulo |
NullType representa Nenhum, porque os dados do tipo não podem ser determinados; portanto, não é possível obter informações desse tipo. |
Estrutura |
Os metadados da estrutura são para cada structField: |
Ele também define um conjunto de verificações de validação predefinidas para cada tipo de dados detalhado na tabela a seguir:
Tipo |
Verificações Pandera |
Verificações adicionais |
---|---|---|
Booliano |
Cada valor é True ou False. |
A contagem de valores True e False. |
Numérico ( |
Cada valor está no intervalo do valor mínimo e do valor máximo. |
A precisão decimal. O valor médio. O desvio padrão. |
Data |
N/A |
Valores mínimos e máximos. |
Carimbo de data/hora |
Cada valor está no intervalo do valor mínimo e do valor máximo. |
O formato do valor. |
Carimbo de data/hora ntz |
Cada valor está no intervalo do valor mínimo e do valor máximo. |
O formato do valor. |
Cadeia de caracteres |
O comprimento de cada valor está no intervalo de comprimento mínimo e máximo. |
Nenhum |
Char |
PySpark trata qualquer literal como um tipo de cadeia de caracteres, portanto, |
|
Varchar |
PySpark trata qualquer literal como um tipo de cadeia de caracteres, portanto, |
|
Decimal |
N/A |
N/A |
Matriz |
N/A |
Nenhum |
Binário |
N/A |
Nenhum |
Mapa |
N/A |
Nenhum |
Nulo |
N/A |
N/A |
Estrutura |
N/A |
Nenhum |
Esse modo permite que o usuário defina uma amostra de um DataFrame para coletar, mas é opcional. Por padrão, a coleção funciona com todo o DataFrame. O tamanho da amostra deve representar estatisticamente a população.
O Pandera só pode inferir o esquema de um Pandas DataFrame, o que implica que o PySpark DataFrame deve ser convertido em um Pandas DataFrame, o que pode afetar as resoluções de tipo das colunas. Em particular, o Pandera infere os seguintes tipos de PySpark como tipos de objeto: string
, array
, map
, null
, struct
e binary
.
A saída desse modo é um arquivo JSON para cada DataFrame coletado, em que o nome do arquivo é o mesmo do ponto de verificação. Esse arquivo contém informações relacionadas ao esquema e tem duas seções:
A seção de esquema do Pandera contém os dados inferidos pelo Pandera, como nome, tipo (Pandas), se a coluna permite ou não valores nulos e outras informações para cada coluna, além de fazer verificações da coluna com base no tipo PySpark. É um objeto
DataFrameSchema
de Pandera.A seção de dados personalizados é uma matriz dos dados personalizados coletados por cada coluna com base no tipo PySpark.
Nota
O pacote de coleta pode ter problemas de memória ao processar grandes PySpark DataFrames. Para resolver isso, você pode definir o parâmetro de amostra na função de coleta para um valor entre 0,0 e 1,0, a fim de trabalhar com um subconjunto dos dados em vez de todo o PySpark DataFrame.
Modo de dados coletados DataFrame (DataFrame)¶
Esse modo coleta os dados do PySpark DataFrame. Nesse caso, o mecanismo salva todos os dados do DataFrame fornecido no formato parquet. Usando a conexão padrão do Snowflake do usuário, ele tenta carregar os arquivos de parquet no estágio temporal do Snowflake e criar uma tabela com base nas informações do estágio. O nome do arquivo e da tabela são os mesmos do ponto de verificação.
A saída desse modo é um resultado de arquivo parquet do DataFrame salvo e uma tabela com os dados do DataFrame na conexão de configuração padrão do Snowflake.