Dagster Data Engineering Glossary:
Data Shuffling

Data shuffling definition:
Data shuffling is a process in modern data pipelines where the data is randomly redistributed across different partitions to enable parallel processing and better performance. Shuffling is generally done after some processing has been completed on the data, such as sorting or grouping, and before additional processing is performed. Shuffling can be an expensive operation in terms of time and resources, especially for large datasets.
Data shuffling example using Python:
In Python, data shuffling can be performed using various libraries such as Apache Spark or Dask. Here is an example of shuffling data using Apache Spark: Please note that you need to have the necessary Python libraries installed in your Python environment to run this code.
# Import necessary libraries
from pyspark.sql.functions import rand
from pyspark.sql.functions import col
from pyspark.sql import SparkSession
# create a SparkSession object
spark = SparkSession.builder.appName("DataShreddingExample").getOrCreate()
# Load data into Spark DataFrame
df = spark.read.csv("data.csv", header=True, inferSchema=True)
# Shuffle the DataFrame by randomizing the order of rows, shen print it out
df_shuffled = df.orderBy(rand()).show()
In this example, we first load the data into a Spark DataFrame. We then use the rand()
function to shuffle the rows in the DataFrame randomly. Note that the output will change on each execution since it is randomized.
So for a simple input file of
Col A,Col B
Item 1,A
Item 2,B
Item 3,C
Item 4,D
The output of the code might look like this:
+------+-----+
| Col A|Col B|
+------+-----+
|Item 4| D|
|Item 3| C|
|Item 1| A|
|Item 2| B|
+------+-----+
Note that shuffling can be an expensive operation, so it's important to use it judiciously and only when necessary. It's also important to carefully manage the resources required for shuffling, such as memory and network bandwidth, to avoid overloading the system.
Backpressure

Compact

Compress

Ingest

Load

NoSQL
Pickle
Rebalance

Repartition
Scrape

Shard
Spill

Stored Procedure

Upsert
