¿Cómo ordenar por valor en PySpark?
PySpark es un motor de procesamiento de datos distribuido que se utilizará para escribir el código de una API. PySpark es la colaboración de Apache Spark y Python. Spark es una plataforma de procesamiento de datos a gran escala que brinda la capacidad de procesar datos a escala de petabytes. En Python, tenemos funciones integradas de PySpark como orderBy(), sort(), sortBy(), createDataFrame(), Collect() y asc_nulls_last() que se pueden usar para ordenar los valores.
Sintaxis
La siguiente sintaxis se utiliza en los ejemplos:
createDataFrame()
Esta es una función incorporada en Python que representa otra forma de crear el DataFrame desde el módulo PySpark.
orderBy()
Este es el método integrado en Python que sigue al módulo PySpark para representar el orden ascendente o descendente en una o más columnas.
sort()
Este método se utiliza para enumerar el orden en orden ascendente. Si categorizamos cualquier condición en la función de clasificación, nos permitirá trabajar en orden descendente.
sortBy()
El método sortBy() en Python sigue el sparkContext que se puede utilizar para ordenar los datos en una secuencia ordenada.
parallelize()
Este método está contenido en sparkContext que permite que los datos se distribuyan en varios nodos.
collect()
Esto se conoce comúnmente como PySpark RDD o recopilación de DataFrame, que se puede utilizar para acceder a todos los elementos o números del conjunto de datos.
asc_nulls_last("column_name")
Esta es una función incorporada en Python que devuelve la secuencia de orden en orden ascendente.
Instalación requerida −
pip install pyspark
Este comando ayuda a ejecutar el programa basado en PySpark.
Ejemplo 1
En el siguiente ejemplo, mostraremos cómo ordenar DataFrame por una sola columna. Primero, comience a importar el módulo denominado pyspark.sql.SparkSession. Luego crea un objeto llamado SparkSession. Luego almacene la lista de tuplas en la variable spark. A continuación, cree un DataFrame usando spark.createDataFrame() y proporcione los datos y los nombres de las columnas. Continúe para usar la función orderBy() en el DataFrame para ordenarlo por la columna deseada, en este caso, "Edad". Finalmente, use el DataFrame ordenado usando el método show para obtener el resultado final.
from pyspark.sql
import SparkSession
# Creation of SparkSession
spark = SparkSession.builder.getOrCreate()
# Creation of DataFrame
stu_data = [("Akash", 25), ("Bhuvan", 23), ("Peter", 18), ("Mohan", 26)]
df = spark.createDataFrame(stu_data, ["Name", "Age"])
# Sorting of Dataframe column(Age) in ascending order
sorted_df = df.orderBy("Age")
# sorted DataFrame
sorted_df.show()
Producción
+------+---+
| Name|Age|
+------+---+
| Peter| 18|
|Bhuvan| 23|
| Akash| 25|
| Mohan| 26|
+------+---+
Ejemplo 2
En el siguiente ejemplo, mostraremos cómo ordenar un DataFrame por varias columnas. Aquí utiliza el método orderBy que acepta dos parámetros: lista (para establecer el nombre de la columna) y ascendente (para establecer el valor como verdadero, lo que permite ordenar la secuencia de orden) y lo almacena en la variable sorted_df. Luego use el nombre del método show() con sorted_df para obtener el resultado.
from pyspark.sql
import SparkSession
# Create SparkSession
spark = SparkSession.builder.getOrCreate()
# Create a DataFrame
data = [("Umbrella", 125), ("Bottle", 20), ("Colgate", 118)]
df = spark.createDataFrame(data, ["Product", "Price"])
# Sort DataFrame by product and price in ascending order
sorted_df = df.orderBy(["Price", "Product"], ascending=[True, True])
# Show the sorted DataFrame
sorted_df.show()
Producción
+--------+-----+
| Product|Price|
+--------+-----+
| Bottle| 20|
| Colgate| 118|
|Umbrella| 125|
+--------+-----+
Ejemplo 3
En el siguiente ejemplo, mostraremos cómo ordenar un marco de datos en orden descendente. Aquí utiliza la función incorporada createDataframe que establece manualmente el marco de datos en una estructura 2D. Luego inicialice la variable denominada sorted_df que almacena el valor utilizando el método denominado sort()[La función de clasificación acepta el parámetro como una función incorporada desc(“Edad”) que seguirá la secuencia de orden descendente]. Finalmente, imprimimos el resultado usando sorted_df.show().
from pyspark.sql
import SparkSession
from pyspark.sql.functions
import desc
# Creation of SparkSession
spark = SparkSession.builder.getOrCreate()
# Creation of DataFrame
Emp_data = [("Abhinav", 25, "Male"), ("Meera", 32, "Female"), ("Riya", 18, "Female"), ("Deepak", 33, "Male"), ("Elon", 50, "Male")]
df = spark.createDataFrame(Emp_data, ["Name", "Age", "Gender"])
# Sort DataFrame by Age in descending order
sorted_df = df.sort(desc("Age"))
# Show the sorted DataFrame
sorted_df.show()
Producción
+-------+---+------+
| Name|Age|Gender|
+-------+---+------+
| Elon| 50| Male|
| Deepak| 33| Male|
| Meera| 32|Female|
|Abhinav| 25| Male|
| Riya| 18|Female|
+-------+---+------+
Ejemplo 4
En el siguiente ejemplo, mostraremos cómo ordenar RDD por valor. Aquí creamos un RDD a partir de una lista de tuplas. Luego use la función sortBy() en el RDD y proporcione una función lambda que extraiga el valor que se ordenará por el segundo elemento de cada tupla. A continuación, recopile e itere sobre el RDD ordenado para acceder a los registros ordenados.
# Sorting RDD by Value
from pyspark.sql
import SparkSession
# Creation of SparkSession
spark = SparkSession.builder.getOrCreate()
# Creation of RDD
data = [("X", 25), ("Y", 32), ("Z", 18)]
rdd = spark.sparkContext.parallelize(data)
# Sort RDD by value in ascending order
sorted_rdd = rdd.sortBy(lambda x: x[1])
# Print the sorted RDD
for record in sorted_rdd.collect():
print(record)
Producción
('Z', 18)
('X', 25)
('Y', 32)
Ejemplo 5
En el siguiente ejemplo, mostraremos cómo ordenar un marco de datos con valores nulos. Aquí, utiliza la función sort() en el DataFrame para ordenarlo por la columna "Precio" en orden ascendente con valores nulos, es decir, ninguno. A continuación, pasa asc_nulls_last("Price") como argumento para sort() y luego especifica el orden de clasificación en la secuencia de ascendente a descendente. Luego asigne el marco de datos ordenado en la variable sorted_df y luego use la misma variable con el método show() para obtener el resultado.
# Sorting DataFrame with Null Values
from pyspark.sql
import SparkSession
from pyspark.sql.functions
import asc_nulls_last
# Creation of SparkSession
spark = SparkSession.builder.getOrCreate()
# Creation of DataFrame with null values
data = [("Charger", None), ("Mouse", 320), ("PEN", 18), ("Bag", 1000), ("Notebook", None)] # None = null
df = spark.createDataFrame(data, ["Product", "Price"])
# Sorting of DataFrame column(Price) in ascending order with null values last
sorted_df = df.sort(asc_nulls_last("Price"))
# Show the sorted DataFrame
sorted_df.show()
Producción
+--------+-----+
| Product|Price|
+--------+-----+
| PEN| 18|
| Mouse| 320|
| Bag| 1000|
| Charger| null|
|Notebook| null|
+--------+-----+
Conclusión
Discutimos las diferentes formas de ordenar el valor en PuSpark. Usamos algunas de las funciones integradas como orderBy(), sort(), asc_nulls_last(), etc. El propósito de la clasificación se utiliza para obtener el orden de la secuencia, ya sea ascendente o descendente. Las diversas aplicaciones relacionadas con PySpark, como bibliotecas en tiempo real, procesamiento de datos a gran escala y API de compilación.