Snowpark Migration Accelerator: Categorias de referência do Spark

O SnowConvert para o Spark categoriza os elementos do Spark com base em como eles podem ser mapeados para o Snowpark. As categorias a seguir descrevem como cada referência do Spark é traduzida, inclusive:

  • Se o SnowConvert pode convertê-las automaticamente

  • Se é possível implementar no Snowpark Também fornece

  • Exemplos de conversão

  • Descrição do processo de mapeamento

As seções abaixo explicam cada tipo de status e fornecem exemplos.

Direto

A conversão direta significa que a função funciona exatamente da mesma forma no PySpark e no Snowpark, não exigindo modificações no código.

  • Suporte para Snowpark: Disponível

  • Suporte a ferramentas: Disponível

  • Exemplo do Spark:

col("col1")
Copy
  • Exemplo do Snowpark:

col("col1")
Copy

Renomear

A função PySpark tem um equivalente no Snowpark, mas você precisa usar um nome de função diferente.

  • Suporte para Snowpark: Disponível

  • Suporte a ferramentas: Disponível

  • Exemplo do Spark:

orderBy("date")
Copy
  • Exemplo do Snowpark:

sort("date")
Copy

Auxiliar

Nota

A partir do Spark Conversion Core V2.40.0, a biblioteca de extensões Python não é mais suportada. Os elementos do Python Spark não serão classificados como extensões a partir desta versão. No entanto, as classes auxiliares da biblioteca de extensões do Snowpark continuarão disponíveis para o Spark Scala.

Para resolver a diferença entre as funcionalidades do Spark e do Snowpark, você pode criar uma função auxiliar em um arquivo de extensão. Essa função auxiliar terá a mesma assinatura que a função Spark original e poderá ser chamada de qualquer arquivo, quando necessário. A biblioteca de extensão conterá essa função para resolver o problema de compatibilidade.

Para obter mais informações sobre a biblioteca de extensões do Snowpark, visite nosso repositório GitHub em https://github.com/Snowflake-Labs/snowpark-extensions.

Os exemplos incluem parâmetros adicionais fixos e alterações na ordem dos parâmetros.

  • Suporte para Snowpark: Disponível

  • Suporte a ferramentas: Disponível

  • Exemplo do Spark:

instr(str, substr)
Copy
  • Exemplo do Snowpark:

# creating a helper function named instr with an 
# identical signature as the pyspark function, like:

def instr(source: str, substr: str) -> str:
    """
    Returns the position of a substring within a source string.
    Similar to the CHARINDEX function in SQL.
    
    Args:
        source: The string to search in
        substr: The string to search for
        
    Returns:
        The position where the substring is found, or 0 if not found
    """
    return charindex(substr, str)

## Transformation

The function is rebuilt in Snowpark to achieve the same results as the original, though it may look different. The new version might use multiple functions or additional code lines to accomplish the same task.

* Snowpark Support: Yes
* Tool Support: Yes
* Spark Example:

```{code} python
:force:
col1 = col("col1")
col2 = col("col2")
col1.contains(col2)
Copy
  • Exemplo do Snowpark:

col1 = col("col1")
col2 = col("col2")
from snowflake.snowpark.functions as f
f.contains(col, col2)
Copy

WorkAround

Essa categoria se aplica quando o SMA não pode converter automaticamente um elemento PySpark, mas há uma solução manual documentada disponível na documentação da ferramenta para ajudar a concluir a conversão.

  • Suporte para Snowpark: Disponível

  • Suporte a ferramentas: Não disponível

  • Exemplo do Spark:

instr(str, substr)
Copy
  • Exemplo do Snowpark:

#EWI: SPRKPY#### => pyspark function has a workaround, see documentation for more info
charindex(substr, str)
Copy

NotSupported

Essa categoria se aplica quando um elemento PySpark não pode ser convertido porque não há equivalente correspondente no Snowflake.

  • Suporte para Snowpark: Não disponível

  • Suporte a ferramentas: Não disponível

  • Exemplo do Spark:

df:DataFrame = spark.createDataFrame(rowData, columns)
df.alias("d")
Copy
  • Exemplo do Snowpark:

df:DataFrame = spark.createDataFrame(rowData, columns)
# EWI: SPRKPY11XX => DataFrame.alias is not supported
# df.alias("d")
Copy

NotDefined

Esse erro ocorre quando a ferramenta identifica um elemento PySpark, mas não consegue convertê-lo porque o elemento não está incluído no banco de dados de conversão suportado pela ferramenta.

Essa categoria se aplica quando um elemento PySpark não pode ser convertido porque não há nenhum recurso ou funcionalidade correspondente no Snowflake.

  • Suporte para Snowpark: Não disponível

  • Suporte a ferramentas: Não disponível

  • Exemplo do Spark: Não aplicável

  • Exemplo do Snowpark: Não aplicável

Os resultados da avaliação classificarão todas as referências detectadas do Spark API nas seguintes categorias.