Biblioteca Snowpark Checkpoints: coletores¶
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 números (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
(padrão) eDATAFRAME
.output_path: (opcional) o caminho para o arquivo onde o ponto de verificação está salvo
O valor padrão é o diretório de trabalho atual.
O processo de coleta gera um arquivo de saída JSON, chamado checkpoint_collection_result.json
, que contém as seguintes informações sobre o resultado de cada ponto de coleta:
Um carimbo de data/hora de quando o ponto de coleta começou
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 (consulte as tabelas a seguir). Para qualquer coluna, independentemente de seu tipo, os dados personalizados coletados incluem 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 ( |
Valor mínimo; valor máximo; valor médio; precisão decimal (no caso do tipo inteiro, o valor é zero); desvio padrão |
Data |
Valor mínimo; valor máximo; Formato da data (%Y-%m-%d) |
DayTimeIntervalType e YearMonthIntervalType |
Valor mínimo; valor máximo |
Carimbo de data/hora |
Valor mínimo; valor máximo; formato da data (%Y-%m-%dH:%M:%S) |
Carimbo de data/hora ntz |
Valor mínimo; valor máximo; formato da data (%Y-%m-%dT%H:%M:%S%z) |
Cadeia de caracteres |
Valor do comprimento mínimo; 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 |
Valor mínimo; valor máximo; valor médio; precisão decimal |
Matriz |
Tipo do valor; se permitido, nulo como elemento; proporção de valores nulos; tamanho máximo da matriz; tamanho mínimo da matriz; tamanho médio das matrizes; se todas as matrizes têm o mesmo tamanho |
Binário |
Tamanho máximo; tamanho mínimo; tamanho médio; se todos os elementos têm o mesmo tamanho |
Mapa |
Tipo da chave; tipo do valor; se permitido, nulo como valor; proporção de valores nulos; tamanho máximo do mapa; tamanho mínimo do mapa; tamanho médio do mapa; se todos os mapas têm 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. |
Precisão decimal; valor médio; 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 verificações das colunas 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 trabalhar com um subconjunto de dados em vez de todo PySpark DataFrame, você pode definir o parâmetro de amostra na função de coleta como um valor entre 0,0 e 1,0.
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.