ComeçarComece de graça

Praticando a criação de uma UDF

Às vezes, seus dados precisam de uma transformação que não é suportada pelas funções nativas. Nesses casos, uma função definida pelo usuário ("UDF") personalizada é ideal.

A função SQL udf está disponível.

Um dataframe df2 está disponível, do tipo DataFrame[doc: array<string>, in: array<string>, out: array<string>]. A coluna doc contém tokens triviais.

O seguinte exibe as primeiras 20 linhas de df2 onde doc contém '1':

df2.where(array_contains('doc','1')).show()

Você tem dois objetivos para cumprir:

  1. Garantir que os dados transformados consistam em vetores não vazios.
  2. Um dataframe tem uma coluna que contém arrays de string, em que cada array tem um único item. Você quer transformar essa coluna em uma string.

Este exercício faz parte do curso

Introdução ao Spark SQL em Python

Ver curso

Instruções do exercício

  • Crie uma udf que retorne verdadeiro se, e somente se, o valor for um vetor não vazio, usando numNonzeros()
  • Crie uma udf que retorne o primeiro elemento do array e retorne sua representação em string.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# Returns true if the value is a nonempty vector
nonempty_udf = udf(lambda x:  
    True if (x and hasattr(x, "toArray") and x.____())
    else False, ____())

# Returns first element of the array as string
s_udf = udf(lambda x: ____(x[0]) if (x and type(x) is list and len(x) > 0)
    else '', ____())
Editar e executar o código