Referência de Operadores de Função de Tabela

O operador de função de tabela fornece uma lista de funções de tabela incorporadas que você pode usar em um fluxo de dados para retornar dados na forma de tabelas.

Consulte Operador de Função de Tabela.

Veja uma lista das funções de tabela incorporadas suportadas pelo operador de função de tabela.

Cache

Persiste e armazena em cache um conjunto de dados de acordo com o armazenamento de memória fornecido level.

Retorna um novo conjunto de dados no conjunto de dados distribuído resiliente (RDD) armazenado em cache.

Parâmetro Descrição
level

O armazenamento de memória a ser usado:

MEMORY_ONLY: Armazene como objetos Java desserializados na JVM. Se a memória for insuficiente, algumas partições RDD não são armazenadas em cache, mas são recomputadas conforme e quando necessário.

MEMORY_AND_DISK: Armazene como objetos Java desserializados na JVM. Se a memória for insuficiente, algumas partições RDD são armazenadas no disco e lidas do disco como e quando necessário.

MEMORY_ONLY_SER: Armazene como objetos Java desserializados.

MEMORY_AND_DISK_SER: Armazene como objetos Java desserializados. As partições que não se encaixam são armazenadas no disco.

DISK_ONLY: Armazene as partições RDD somente no disco.

MEMORY_ONLY_2, MEMORY_AND_DISK_2, etc: Semelhante a outros níveis, mas cada partição é replicada em dois nós de cluster.

Análise de tabulação cruzada

Calcula uma tabela de frequência ou de contingência por par a partir de valores distintos das duas colunas fornecidas.

O número de valores distintos para cada coluna deve ser menor que 1e4.

Retorna um dataframe que contém a tabela de contingência. Na tabela de contingência:

  • O nome da primeira coluna é col1_col2, em que col1 é a primeira coluna e col2 é a segunda antes da transformação. A primeira coluna de cada linha são os valores distintos de col1.
  • Os outros nomes de coluna são os valores distintos de col2.
  • As contagens são retornadas como o tipo long.
  • Pares sem ocorrências recebem zero como contagem.
  • O número máximo de pares diferentes de zero é 1e6.
  • Os elementos nulos são substituídos por null.
Parâmetro Descrição
col1

Nome da primeira coluna. Consulte a nota após esta tabela para saber as limitações.

Itens distintos de col1 fazem o primeiro item de cada linha no dataframe retornado.

col2

Nome da segunda coluna. Consulte a nota após esta tabela para saber as limitações.

Itens distintos de co2 fazem os nomes das colunas no dataframe retornado.

Observação

Somente os seguintes caracteres são permitidos em um nome de coluna:

  • letras minúsculas e maiúsculas a-z A-Z
  • números 0-9
  • sublinhado _

Exemplo

Suponha que col1 seja age e col2 seja salary.

Antes da transformação:

+---+------+
|age|salary|
+---+------+
|1  |100   |
|1  |200   |
|2  |100   |
|2  |100   |
|2  |300   |
|3  |200   |
|3  |300   |
+---+------+

Após a transformação:

+----------+---+---+---+
|age_salary|100|200|300|
+----------+---+---+---+
|2         |2  |0  |1  |
|1         |1  |1  |0  |
|3         |0  |1  |1  |
+----------+---+---+---+
Cubo

Gera um cubo multidimensional de todas as combinações possíveis usando a lista de colunas fornecida e os cálculos nas expressões de função agregada fornecidas.

As seguintes funções agregadas são suportadas nas expressões:

  • AVG
  • COUNT
  • MEAN
  • MAX
  • MIN
  • SUM

Retorna um dataframe após a transformação do cubo.

Parâmetro Descrição
cubeColumns

A lista de colunas, separadas por vírgulas, pela qual o cubo multidimensional será gerado.

aggExpressions

As expressões de função de agregação a serem executadas nas colunas.

Por exemplo: salary -> avg, age -> max

Exemplo

Antes da transformação:

+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng       |A    |local  |1000  |10 |
|Art       |B    |foreign|2000  |11 |
|Sport     |C    |local  |1500  |13 |
|Eng       |A    |foreign|800   |19 |
|Art       |A    |foreign|3000  |30 |
|Eng       |E    |foreign|1000  |21 |
|Art       |D    |local  |1000  |32 |
|Sport     |C    |local  |1000  |28 |
+----------+-----+-------+------+---+

Se cubeColumns for department, region e aggExpressions for salary -> avg, age -> max (calcular o salário médio e a idade máxima), o cubo após a transformação será:

+----------+-------+-----------------+--------+
|department|region |avg(salary)      |max(age)|
+----------+-------+-----------------+--------+
|Eng       |foreign|900.0            |21      |
|Sport     |null   |1250.0           |28      |
|Art       |null   |2000.0           |32      |
|Eng       |null   |933.3333333333334|21      |
|null      |local  |1125.0           |32      |
|Art       |foreign|2500.0           |30      |
|null      |foreign|1700.0           |30      |
|Eng       |local  |1000.0           |10      |
|null      |null   |1412.5           |32      |
|Sport     |local  |1250.0           |28      |
|Art       |local  |1000.0           |32      |
+----------+-------+-----------------+--------+
Geração de dados

Gera dados sintéticos usando o formato de arquivo e o conteúdo fornecidos. Os formatos aceitos são:

  • CSV
  • JSON

Retorna uma entidade de dados. A origem de dados sintéticos pode ser usada em testes de unidade de pipeline em que dados reais não são usados ou movidos.

Parâmetro Descrição
format

O tipo de arquivo. Os valores suportados são:

  • CSV
  • JSON
content

O conteúdo do arquivo para o formato fornecido.

Exemplo

Um exemplo de conteúdo CSV:

co1,co2,co3
1,B,3
A,2,C

Resultado da geração de dados:

+---+---+---+
|co1|co2|co3|
+---+---+---+
|1  |B  |3  |
+---+---+---+
|A  |2  |C  |
+---+---+---+
Deduplicação

Localiza duplicatas na(s) lista(s) de colunas fornecida(s) e retorna um novo conjunto de dados com as linhas duplicadas removidas.

Parâmetro Descrição
columns

Um nome de coluna ou uma lista de nomes de colunas separados por vírgula.

Exemplo

Antes da transformação:

+---+---+
|a  |b  |
+---+---+
|1  |2  |
|3  |4  |
|1  |3  |
|2  |4  |
+---+---+

Se columns for a, o conjunto de dados após a transformação será:

+---+---+
|a  |b  |
+---+---+
|1  |2  |
|3  |4  |
|2  |4  |
+---+---+
Itens frequentes

Localiza itens frequentes na coluna ou lista de colunas especificada usando a frequência mínima especificada.

O algoritmo de contagem frequente de elementos proposto por Karl et al. é usado para encontrar itens frequentes. Falsos positivos são possíveis.

Retorna um dataframe com uma matriz de itens frequentes para cada coluna.

Parâmetro Descrição
freqItems

Um nome de coluna ou uma lista separada por vírgulas de nomes de coluna para os quais você deseja localizar itens frequentes.

support

Frequência mínima para que um item seja considerado frequente.

O valor deve ser maior que 1e-4 (valor decimal de 0.0001).

Por exemplo, 0.6 representa 60%. Ou seja, um item que aparece em pelo menos 60% das linhas é um item frequente.

Exemplo

Antes da transformação:

+-------+--------------+
|user_id|favorite_fruit|
+-------+--------------+
|      1|         apple|
|      2|        banana|
|      3|         apple|
|      4|        orange|
|      5|        banana|
|      6|        banana|
|      7|         apple|
+-------+--------------+

Se freqItems for favorite_fruit e support for 0.6, o dataframe retornado após a transformação será:

+------------------------+
|favorite_fruit_freqItems|
+------------------------+
|                [banana]|
+------------------------+
Na Drop

Remove linhas que contêm valores nulos ou NaN na(s) coluna(s) especificada(s) na lista.

Retorna um dataframe que exclui as linhas.

Parâmetro Descrição
how

Como determinar se uma linha deve ser eliminada. Os valores suportados são:

  • any: Elimine a linha que contém qualquer valor nulo ou NaN no cols especificado.
  • all: Solte a linha somente se cada cols especificado for nulo ou NaN para essa linha.

O parâmetro how será ignorado se o parâmetro minNonNulls for especificado.

cols

Um nome de coluna ou uma lista de nomes de colunas separados por vírgula.

minNonNulls

O número mínimo de valores não nulos e não NaN que uma linha pode conter.

Elimina as linhas que contêm menos do que o mínimo especificado.

O parâmetro minNonNulls substitui o parâmetro how.

Exemplo

Antes da transformação:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

Se how for any e cols for name, o dataframe retornado após a transformação será:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

Quando você usa o parâmetro how com o valor all, uma linha só é eliminada se todos os seus valores forem nulos. Por exemplo, antes da transformação:

+----+--------+----+
|  id|    name| age|
+----+--------+----+
|   1|John Doe|  30|
|   2|    null|null|
|   3|Jane Doe|  25|
|   4|Jake Doe|null|
|null|    null|null|
+----+--------+----+

Após a transformação:

+---+--------+----+
| id|    name| age|
+---+--------+----+
|  1|John Doe|  30|
|  2|    null|null|
|  3|Jane Doe|  25|
|  4|Jake Doe|null|
+---+--------+----+
Preenchimento Na

Substitui valores nulos e retorna um dataframe usando os valores substituídos.

Parâmetro Descrição
replacement

O mapa de chave/valor a ser usado para substituir valores nulos. A chave é um nome de coluna. O valor é um valor substituto.

A chave aponta para o valor de substituição. Por exemplo: name -> Tom significa substituir valores nulos na coluna name por Tom.

Um valor substituto é convertido no tipo de dados da coluna. Um valor de substituição deve ser do seguinte tipo:

  • Inst.
  • Long
  • Flutuar
  • Duplo
  • String
  • Boolean

Exemplo

Antes da transformação:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

Se o mapa de chave/valor for o seguinte:

id -> 3

name -> unknown

age -> 10

Após a transformação:

+---+-------+---+
|id |name   |age|
+---+-------+---+
|1  |Alice  |25 |
|2  |unknown|28 |
|3  |Bob    |10 |
|4  |Charlie|30 |
+---+-------+---+
Na Substituição

Substitui um valor por outro valor na(s) coluna(s) fornecida(s) por chaves correspondentes no mapa de chave e valor de substituição fornecido.

Retorna um novo dataframe que contém a transformação substituída.

Parâmetro Descrição
cols

Um nome de coluna ou uma lista de nomes de colunas separados por vírgulas nos quais os valores de substituição serão aplicados.

Se cols for *, a substituição será aplicada em todas as colunas String, Numérico ou Booliano.

replacement

O mapa de chave/valor substituto a ser usado. A chave é um valor a ser substituído. O valor é o valor de substituição. O valor do mapa pode ter nulos.

A chave aponta para o valor de substituição. Por exemplo: Alice -> Tom significa substituir Alice por Tom.

A chave e o par de valores de substituição devem ter o mesmo tipo. Somente os seguintes tipos são suportados:

  • Boolean
  • Duplo
  • String

Exemplo

Antes da transformação:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

Se cols for name e replacement for Alice -> Tom, o dataframe após a transformação será:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Tom    |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+
Repartição

Divide um conjunto de dados pelas colunas fornecidas no número especificado de partições.

Retorna um novo conjunto de dados particionado por hash. O número exato de partição, conforme especificado, é retornado.

Parâmetro Descrição
partitionColumns

Um nome de coluna ou uma lista de nomes de coluna separados por vírgula pelos quais o conjunto de dados é particionado.

numberOfPartitions

O número de partições a serem criadas.

Consolidação

Gera um rollup multidimensional de combinações possíveis usando a lista de colunas fornecida e os cálculos nas expressões de função agregada fornecidas.

As seguintes funções agregadas são suportadas nas expressões:

  • AVG
  • COUNT
  • MEAN
  • MAX
  • MIN
  • SUM

Retorna um dataframe após a transformação de acúmulo.

Parâmetro Descrição
rollupColumns

A lista de colunas, separadas por vírgulas, pela qual gerar o acúmulo multidimensional.

aggExpressions

As expressões de função de agregação a serem executadas nas colunas.

Por exemplo: salary -> avg, age -> max

Exemplo

Antes da transformação:

+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng       |A    |local  |1000  |10 |
|Art       |B    |foreign|2000  |11 |
|Sport     |C    |local  |1500  |13 |
|Eng       |A    |foreign|800   |19 |
|Art       |A    |foreign|3000  |30 |
|Eng       |E    |foreign|1000  |21 |
|Art       |D    |local  |1000  |32 |
|Sport     |C    |local  |1000  |28 |
+----------+-----+-------+------+---+

Se rollupColumns for department, region e aggExpressions for salary -> avg, age -> max (calcular o salário médio e a idade máxima), o acúmulo após a transformação será:

+----------+-------+-----------------+--------+
|department|region |avg(salary)      |max(age)|
+----------+-------+-----------------+--------+
|Eng       |foreign|900.0            |21      |
|Sport     |null   |1250.0           |28      |
|Art       |null   |2000.0           |32      |
|Eng       |null   |933.3333333333334|21      |
|Art       |foreign|2500.0           |30      |
|Eng       |local  |1000.0           |10      |
|null      |null   |1412.5           |32      |
|Sport     |local  |1250.0           |28      |
|Art       |local  |1000.0           |32      |
+----------+-------+-----------------+--------+
Spark SQL

Executa consultas SQL do Spark em dados de entrada, criando primeiro views temporárias usando os nomes de tabela fornecidos.

Parâmetro Descrição
SQL

A instrução SQL ou o script a ser executado.

Exemplo: select * from table1

tableName

Um nome de tabela ou uma lista separada por vírgulas de nomes de tabela pelos quais o Spark cria tabelas temporárias.

Exemplo: table1, table2

Amostragem estratificada

Gera uma amostra estratificada sem substituição com base na fração de amostragem fornecida para cada estrato.

Retorna um novo dataframe que representa a amostra estratificada.

Parâmetro Descrição
strata_col

A coluna que define os estratos.

fractions

A fracção de amostragem para cada estrato, de 0.0 a 1.0.

Por exemplo, 0.1 retorna 10% das linhas e 1.0 retorna 100% das linhas.

Se uma fração não for especificada, zero será assumido.

sample_size

Se fractions não for especificado, especifique uma parte do conjunto de dados a ser amostrado, de 0.0 a 1.0.

seed

Use qualquer número aleatório em seed para retornar a mesma amostra toda vez, mantendo o resultado consistente.

Exemplo

Antes da transformação:

+---+-----+
|key|value|
+---+-----+
|  1|    1|
|  1|    2|
|  2|    1|
|  2|    1|
|  2|    3|
|  3|    2|
|  3|    3|
+---+-----+

Se strata_col for key e fractions for o seguinte:

1 -> 1.0, 3 -> 0.5

Após a transformação:

+---+-----+
|key|value|
+---+-----+
|  1|    1|
|  1|    2|
|  3|    2|
+---+-----+
Resumo

Calcula as estatísticas fornecidas para colunas numéricas e de string.

Se nenhuma estatística for fornecida, todas as seguintes estatísticas serão calculadas:

  • COUNT
  • MEAN
  • STDDEV
  • MIN
  • quartis aproximados (percentis em 25%, 50% e 75%)
  • MAX
Parâmetro Descrição
statistics

Uma lista de estatísticas separada por vírgulas.

Os valores suportados são:

  • COUNT
  • MEAN
  • STDDEV
  • MIN
  • um ou mais percentis aproximados arbitrários especificados como uma porcentagem (por exemplo, 75%)
  • MAX

Exemplo: count, mean, stddev, min, 27%, 41%, 95%, max

Exemplo

Antes da transformação:

+----------+------+-----------------+--------+
|department|gender|avg(salary)      |max(age)|
+----------+------+-----------------+--------+
|Eng       |female|900.0            |21      |
|Sport     |null  |1250.0           |28      |
|Art       |null  |2000.0           |32      |
|Eng       |null  |933.3333333333334|21      |
|Art       |female|2500.0           |30      |
|Eng       |male  |1000.0           |10      |
|null      |null  |1412.5           |32      |
|Sport     |male  |1250.0           |28      |
|Art       |male  |1000.0           |32      |
+----------+------+-----------------+--------+

Suponha que statistics seja count, mean, stddev, min, 27%, 41%, 95%, max.

Após a transformação:

+-------+----------+-----+------+----------------+----------------+
|summary|department|group|gender|salary          |age             |
+-------+----------+-----+------+----------------+----------------+
|count  |8         |8    |8     |8               |8               |
|mean   |null      |null |null  |1412.5          |20.5            |
|stddev |null      |null |null  |749.166203188585|8.76682056718072|
|min    |Art       |A    |female|800             |10              |
|27%    |null      |null |null  |1000            |13              |
|41%    |null      |null |null  |1000            |19              |
|95%    |null      |null |null  |3000            |32              |
|max    |Sport     |E    |male  |3000            |32              |
+-------+----------+-----+------+----------------+----------------+