sort() vs orderBy() no Spark

Qual é a diferença entre sort() e orderBy() no Apache Spark

Foto de Mikael Kristenson no Unsplash

Introdução

A classificação de um Spark DataFrame é provavelmente uma das operações mais usadas. Você pode usar uma sort()ou orderBy()funções internas para classificar um DataFrame específico em ordem crescente ou decrescente em pelo menos uma coluna. Embora ambas as funções devam ordenar os dados em um Spark DataFrame, elas têm uma diferença significativa.

No artigo de hoje vamos discutir a diferença entre sort()e orderBy()entender quando usar um sobre o outro.

Primeiro vamos criar um DataFrame de exemplo que será usado ao longo do artigo para demonstrar como ambos sort()e orderBy()funcionam. Observe que usarei a API Python, mas o que discutimos hoje também é aplicável para Scala.

df = spark.createDataFrame(
   [
      ('Andrew', 'Johnson', 'Engineering', 'UK', 34),
      ('Maria', 'Brown', 'Finance', 'US', 41),
      ('Michael', 'Stevenson', 'Sales', 'US', 31),
      ('Mark', 'Anderson', 'Engineering', 'Ireland', 28),
      ('Jen', 'White', 'Engineering', 'UK', 29)
  ],
  ['first_name', 'last_name', 'department', 'country', 'age']
)
df.show(truncate=False)
+----------+---------+-----------+--------+---+
|first_name|last_name| department||country|age|
+----------+---------+-----------+--------+---+
|    Andrew|  Johnson|Engineering|      UK| 34|
|     Maria|    Brown|    Finance|      US| 41|
|   Michael|Stevenson|      Sales|      US| 31|
|      Mark| Anderson|Engineering| Ireland| 28|
|       Jen|    White|Engineering|      UK| 29|
+----------+---------+-----------+--------+---+

Agora podemos usar sort()o método para classificar o DataFrame dfcom base no país e na idade dos funcionários em ordem crescente.

df.sort('country', 'age').show(truncate=False)
+----------+---------+-----------+--------+---+
|first_name|last_name| department||country|age|
+----------+---------+-----------+--------+---+
|      Mark| Anderson|Engineering| Ireland| 28|
|       Jen|    White|Engineering|      UK| 29|
|    Andrew|  Johnson|Engineering|      UK| 34|
|   Michael|Stevenson|      Sales|      US| 31|
|     Maria|    Brown|    Finance|      US| 41|
+----------+---------+-----------+--------+---+

Por exemplo, se os funcionários Jene Andrewestão armazenados em uma partição diferente, o pedido final pode estar errado, por exemplo:

+----------+---------+-----------+--------+---+
|first_name|last_name| department||country|age|
+----------+---------+-----------+--------+---+
|      Mark| Anderson|Engineering| Ireland| 28|
|    Andrew|  Johnson|Engineering|      UK| 34|
|       Jen|    White|Engineering|      UK| 29|
|   Michael|Stevenson|      Sales|      US| 31|
|     Maria|    Brown|    Finance|      US| 41|
+----------+---------+-----------+--------+---+

Da mesma forma, podemos usar orderBy()para ordenar nosso DataFrame com base no país e na idade dos funcionários em ordem crescente:

df.orderBy('country', 'age').show(truncate=False)
+----------+---------+-----------+--------+---+
|first_name|last_name| department||country|age|
+----------+---------+-----------+--------+---+
|      Mark| Anderson|Engineering| Ireland| 28|
|       Jen|    White|Engineering|      UK| 29|
|    Andrew|  Johnson|Engineering|      UK| 34|
|   Michael|Stevenson|      Sales|      US| 31|
|     Maria|    Brown|    Finance|      US| 41|
+----------+---------+-----------+--------+---+

Uma palavra final

Ambas as funções sort()e orderBy()podem ser usadas para classificar Spark DataFrames em pelo menos uma coluna e qualquer ordem desejada, ou seja, ascendente ou descendente.

sort()é mais eficiente em comparação com orderBy()porque os dados são classificados em cada partição individualmente e é por isso que a ordem nos dados de saída não é garantida.

Por outro lado, orderBy()coleta todos os dados em um único executor e depois os classifica. Isso significa que a ordem dos dados de saída é garantida, mas esta é provavelmente uma operação muito cara.

Portanto, se você precisa classificar um DataFrame onde o pedido não é tão crítico e ao mesmo tempo deseja que seja o mais rápido possível, sort()é mais adequado. Caso a ordem seja crítica, certifique-se de usar orderBy()que garanta que os dados de saída sejam ordenados com base nos parâmetros do usuário.

você pode gostar

Suggested posts

Encontrar informações sobre nomes de domínio

Um trecho de Small, Sharp Software Tools por Brian P. Hogan

Encontrar informações sobre nomes de domínio

Quando você faz uma solicitação para facebook.com, seu computador procura o nome de domínio para traduzir esse nome de domínio em um endereço IP para que seu computador possa fazer essa conexão.

Como executar plugins ChatGPT gratuitamente usando Langchain

Como executar plugins ChatGPT gratuitamente usando Langchain

Você deve ter ouvido falar sobre todos os novos plug-ins poderosos do ChatGPT, como navegador, intérprete de código, etc. Mas há um problema, o acesso aos plug-ins é limitado a uma lista de espera e, portanto, muitos não têm acesso a ela.

Related posts

"A Fossa das Marianas Revelada: Revelando as Terríveis Verdades Ocultas do Abismo"

"A Fossa das Marianas Revelada: Revelando as Terríveis Verdades Ocultas do Abismo"

Introdução:Bem-vindos, corajosos leitores, a uma jornada que nos levará às profundezas mais sombrias do nosso planeta. Neste blog, mergulhamos no mundo enigmático da Fossa das Marianas, revelando seus segredos ocultos e revelando as verdades arrepiantes que se escondem sob sua superfície.

Aprender na semana de trabalho é mais importante do que você pensa

Aprender na semana de trabalho é mais importante do que você pensa

Muitas vezes nos encontramos lutando para implementar o que sabemos que é bom para nós. Desde dizer a um outro significativo que o amamos até lembrar de falar como um pirata, sempre haverá quem afirme que um dia, semana ou mês de eventos não é necessário porque eles já estão fazendo essas coisas.

O primeiro livro de uma criança sobre como ficar chapado

O primeiro livro de uma criança sobre como ficar chapado

(Aviso - isso é sátira, com a intenção de ser alegremente subversivo - definitivamente não é para crianças) Você viu sua mãe e seu pai se esconderem na cozinha e fumarem aqueles cigarros fedorentos. Eles dizem a você.

O assassinato de Jordan Neely e o problema do racismo “patriótico”

Os EUA podem dar o passo essencial de não igualar comportamento racista a ser um bom americano?

O assassinato de Jordan Neely e o problema do racismo “patriótico”

[Alerta de gatilho: este ensaio inclui capturas de tela de pessoas elogiando o assassino de Jordan Neely.] Os policiais finalmente - e talvez com relutância - acusaram Daniel Penny, o homem que sufocou Jordan Neely até a morte, por aquele homicídio.