<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Okibaba</title>
    <description>The latest articles on DEV Community by Okibaba (@okibaba).</description>
    <link>https://dev.to/okibaba</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F563844%2Fe1a15d8b-dd6e-4661-a51e-e02f7f1ab4e6.jpeg</url>
      <title>DEV Community: Okibaba</title>
      <link>https://dev.to/okibaba</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/okibaba"/>
    <language>en</language>
    <item>
      <title>zoomcamp data engineering project - part 5</title>
      <dc:creator>Okibaba</dc:creator>
      <pubDate>Fri, 19 Apr 2024 07:01:05 +0000</pubDate>
      <link>https://dev.to/okibaba/zoomcamp-data-engineering-project-part-5-4m87</link>
      <guid>https://dev.to/okibaba/zoomcamp-data-engineering-project-part-5-4m87</guid>
      <description>&lt;h1&gt;
  
  
  editing
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>zoomcamp data engineering project - part 4</title>
      <dc:creator>Okibaba</dc:creator>
      <pubDate>Fri, 19 Apr 2024 07:00:50 +0000</pubDate>
      <link>https://dev.to/okibaba/zoomcamp-data-engineering-project-part-4-3h7h</link>
      <guid>https://dev.to/okibaba/zoomcamp-data-engineering-project-part-4-3h7h</guid>
      <description>&lt;h1&gt;
  
  
  editing
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>zoomcamp data engineering project - part 3</title>
      <dc:creator>Okibaba</dc:creator>
      <pubDate>Fri, 19 Apr 2024 06:20:49 +0000</pubDate>
      <link>https://dev.to/okibaba/zoomcamp-data-engineering-project-part-3-307c</link>
      <guid>https://dev.to/okibaba/zoomcamp-data-engineering-project-part-3-307c</guid>
      <description>&lt;h1&gt;
  
  
  editing
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>zoomcamp data engineering project - part 2</title>
      <dc:creator>Okibaba</dc:creator>
      <pubDate>Fri, 19 Apr 2024 06:19:14 +0000</pubDate>
      <link>https://dev.to/okibaba/zoomcamp-data-engineering-project-part-2-g24</link>
      <guid>https://dev.to/okibaba/zoomcamp-data-engineering-project-part-2-g24</guid>
      <description>&lt;h1&gt;
  
  
  in edit
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>zoomcamp data engineering project - part 1</title>
      <dc:creator>Okibaba</dc:creator>
      <pubDate>Fri, 19 Apr 2024 06:18:35 +0000</pubDate>
      <link>https://dev.to/okibaba/zoomcamp-data-engineering-project-part-1-17oi</link>
      <guid>https://dev.to/okibaba/zoomcamp-data-engineering-project-part-1-17oi</guid>
      <description>&lt;h1&gt;
  
  
  in edit
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Data Engineering Zoomcamp Week 6 readings - pub/sub Vs Message queue</title>
      <dc:creator>Okibaba</dc:creator>
      <pubDate>Tue, 09 Apr 2024 06:58:26 +0000</pubDate>
      <link>https://dev.to/okibaba/data-engineering-zoomcamp-week-6-readings-pubsub-vs-message-queue-2l58</link>
      <guid>https://dev.to/okibaba/data-engineering-zoomcamp-week-6-readings-pubsub-vs-message-queue-2l58</guid>
      <description>&lt;p&gt;Pub/Sub and Message Queue are both messaging patterns that enable asynchronous communication, loose coupling, and scalability in distributed systems, but differ in their communication style, message consumption, and use cases.&lt;/p&gt;

&lt;p&gt;Here's a comparison between Pub/Sub and Message Queue:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Communication Pattern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pub/Sub: In the Pub/Sub pattern, publishers publish messages to a topic or channel, and subscribers who have subscribed to that topic receive the messages. Publishers and subscribers are decoupled and may not have knowledge of each other.&lt;/li&gt;
&lt;li&gt;Message Queue: In the Message Queue pattern, producers send messages to a queue, and consumers retrieve messages from the queue. Consumers typically process messages in a first-in, first-out (FIFO) order.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Message Consumption:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pub/Sub: In Pub/Sub, multiple subscribers can receive the same message published to a topic. Each subscriber receives its own copy of the message and processes it independently.&lt;/li&gt;
&lt;li&gt;Message Queue: In a Message Queue, each message is typically consumed by a single consumer. Once a consumer retrieves a message from the queue, it is removed from the queue.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Decoupling:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pub/Sub: Pub/Sub provides a higher level of decoupling between publishers and subscribers. Publishers and subscribers do not need to be aware of each other's existence or communicate directly.&lt;/li&gt;
&lt;li&gt;Message Queue: Message Queues also provide decoupling between producers and consumers, but the decoupling is typically less than in Pub/Sub. Consumers are often aware of the specific queue they are consuming from.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Scalability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pub/Sub: Pub/Sub allows for easy scalability as new subscribers can be added dynamically to a topic without impacting the publishers or existing subscribers.&lt;/li&gt;
&lt;li&gt;Message Queue: Message Queues can also scale by adding more consumers to process messages from the queue. However, the scalability may be limited by the order of message processing and the need for coordination among consumers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Persistence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pub/Sub: In Pub/Sub, messages are typically not persisted by default. If a subscriber is offline or disconnected, it may miss messages published during that time.&lt;/li&gt;
&lt;li&gt;Message Queue: Message Queues often provide message persistence, ensuring that messages are stored until they are successfully processed by a consumer. This allows for reliable message delivery even if consumers are temporarily unavailable.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use Cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pub/Sub: Pub/Sub is commonly used in scenarios where real-time data dissemination is required, such as real-time updates, event-driven architectures, or broadcasting messages to multiple subscribers.&lt;/li&gt;
&lt;li&gt;Message Queue: Message Queues are suitable for scenarios where reliable message delivery and processing are important.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Data Engineering Zoomcamp Week 6 - considerations for ingesting streaming data</title>
      <dc:creator>Okibaba</dc:creator>
      <pubDate>Tue, 09 Apr 2024 06:54:43 +0000</pubDate>
      <link>https://dev.to/okibaba/data-engineering-zoomcamp-week-6-considerations-for-ingesting-streaming-data-2dm0</link>
      <guid>https://dev.to/okibaba/data-engineering-zoomcamp-week-6-considerations-for-ingesting-streaming-data-2dm0</guid>
      <description>&lt;p&gt;I went further and did some reading on message and streaming data. My main reading source was fundamentals of data engineering book by Joe Reis &amp;amp; Matt Houseley.&lt;/p&gt;

&lt;p&gt;According to them, the key things to consider when ingesting event driven data like streaming data are:&lt;br&gt;
-Schema evolution&lt;br&gt;
-Late arrival data&lt;br&gt;
-Ordering &amp;amp; Multiple delivery&lt;br&gt;
-Time to live&lt;br&gt;
-Message size limitations.&lt;br&gt;
-Location &amp;amp; redundancy goals&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;br&gt;
Fundamentals of data engineering book by Joe Reis &amp;amp; Matt Houseley.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Data Engineering Zoomcamp Week 6 - using redpanda 1</title>
      <dc:creator>Okibaba</dc:creator>
      <pubDate>Tue, 09 Apr 2024 06:43:52 +0000</pubDate>
      <link>https://dev.to/okibaba/data-engineering-zoomcamp-week-6-using-redpanda-1-3jbe</link>
      <guid>https://dev.to/okibaba/data-engineering-zoomcamp-week-6-using-redpanda-1-3jbe</guid>
      <description>&lt;p&gt;This week we explored using redpanda as a drop in for kafka.&lt;br&gt;
Using redpanda can be ran from a docker container.&lt;/p&gt;

&lt;p&gt;Steps:&lt;br&gt;
Copy the docker-compose.yml file into your install directory (this is a replica of what we used for the course).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: '3.7'
services:
  # Redpanda cluster
  redpanda-1:
    image: docker.redpanda.com/vectorized/redpanda:v22.3.5
    container_name: redpanda-1
    command:
      - redpanda
      - start
      - --smp
      - '1'
      - --reserve-memory
      - 0M
      - --overprovisioned
      - --node-id
      - '1'
      - --kafka-addr
      - PLAINTEXT://0.0.0.0:29092,OUTSIDE://0.0.0.0:9092
      - --advertise-kafka-addr
      - PLAINTEXT://redpanda-1:29092,OUTSIDE://localhost:9092
      - --pandaproxy-addr
      - PLAINTEXT://0.0.0.0:28082,OUTSIDE://0.0.0.0:8082
      - --advertise-pandaproxy-addr
      - PLAINTEXT://redpanda-1:28082,OUTSIDE://localhost:8082
      - --rpc-addr
      - 0.0.0.0:33145
      - --advertise-rpc-addr
      - redpanda-1:33145
    ports:
      # - 8081:8081
      - 8082:8082
      - 9092:9092
      - 28082:28082
      - 29092:29092
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker-compose up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and voila!&lt;/p&gt;

&lt;p&gt;References:&lt;br&gt;
Data engineering zoomcamp week 6 course and homework notes:&lt;br&gt;
&lt;a href="https://github.com/DataTalksClub/data-engineering-zoomcamp/tree/main/cohorts/2024/06-streaming"&gt;https://github.com/DataTalksClub/data-engineering-zoomcamp/tree/main/cohorts/2024/06-streaming&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Data Engineering Zoomcamp Week 6 - Streaming Vs Batch Pipelines</title>
      <dc:creator>Okibaba</dc:creator>
      <pubDate>Mon, 08 Apr 2024 06:36:06 +0000</pubDate>
      <link>https://dev.to/okibaba/data-engineering-zoomcamp-week-6-streaming-vs-batch-pipelines-5aag</link>
      <guid>https://dev.to/okibaba/data-engineering-zoomcamp-week-6-streaming-vs-batch-pipelines-5aag</guid>
      <description>&lt;p&gt;Based on class notes and some readings here and there, here's a summary of differences in data engineering pipelines for streaming and batch processing&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwcq3rjsnp4bphz2mzrtb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwcq3rjsnp4bphz2mzrtb.png" alt="Image description" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/DataTalksClub/data-engineering-zoomcamp/tree/main"&gt;https://github.com/DataTalksClub/data-engineering-zoomcamp/tree/main&lt;/a&gt;&lt;br&gt;
Fundamentals of data engineering by Joe Reis &amp;amp; Matt Housley&lt;br&gt;
Designing Machine Learning Systems by Chip Huyen&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Data Engineering Zoomcamp Week 6 - Streaming using kafka</title>
      <dc:creator>Okibaba</dc:creator>
      <pubDate>Mon, 08 Apr 2024 02:08:15 +0000</pubDate>
      <link>https://dev.to/okibaba/zoomcamp-week-6-streaming-using-kafka-3f3b</link>
      <guid>https://dev.to/okibaba/zoomcamp-week-6-streaming-using-kafka-3f3b</guid>
      <description>&lt;p&gt;This past couple weeks I spent some time learning about Kafka in week 6 of my data engineering zoomcamp.&lt;/p&gt;

&lt;p&gt;Apache Kafka is a distributed streaming platform that has gained immense popularity in recent years due to its ability to handle large-scale, real-time data feeds. It provides a reliable and scalable solution for building streaming data pipelines and applications.&lt;/p&gt;

&lt;p&gt;Grokking kafka requires getting familiar with some of its key architectural abstractions.&lt;/p&gt;

&lt;p&gt;Kafka Architecture:&lt;br&gt;
Kafka follows a publish-subscribe model (pub sub) , where producers send messages to topics, and consumers read messages from those topics. The architecture consists of the following main components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Producers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Producers are responsible for publishing messages to Kafka topics.&lt;/li&gt;
&lt;li&gt;They can choose to send messages to specific partitions within a topic.&lt;/li&gt;
&lt;li&gt;Producers have the ability to control the partition assignment using keys.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Consumers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Consumers are the subscribers who read messages from Kafka topics.&lt;/li&gt;
&lt;li&gt;They are organized into consumer groups, identified by a unique consumer group ID.&lt;/li&gt;
&lt;li&gt;Each consumer within a group reads from a specific partition of a topic.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Topics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Topics are the fundamental unit of organization in Kafka.&lt;/li&gt;
&lt;li&gt;They are used to categorize and store streams of records.&lt;/li&gt;
&lt;li&gt;Topics are partitioned, allowing multiple consumers to read from different partitions simultaneously.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Partitions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Topics are divided into partitions, which are the smallest storage units in Kafka.&lt;/li&gt;
&lt;li&gt;Each partition is an ordered, immutable sequence of records.&lt;/li&gt;
&lt;li&gt;Partitions enable parallel processing and horizontal scalability.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cluster:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kafka runs as a cluster of one or more servers called brokers.&lt;/li&gt;
&lt;li&gt;The cluster is responsible for storing and managing the topics and their partitions.&lt;/li&gt;
&lt;li&gt;Kafka ensures fault tolerance and high availability through replication.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Kafka Configuration:&lt;br&gt;
Kafka provides various configuration options to control its behavior and performance:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Replication Factor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The replication factor determines the number of copies of each partition across the Kafka cluster.&lt;/li&gt;
&lt;li&gt;It ensures fault tolerance and data durability.&lt;/li&gt;
&lt;li&gt;A higher replication factor provides better reliability but increases storage overhead.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Retention:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Retention refers to how long Kafka retains messages within a topic.&lt;/li&gt;
&lt;li&gt;It can be configured based on time (e.g., retaining messages for a specific number of days) or size (e.g., retaining a certain amount of data).&lt;/li&gt;
&lt;li&gt;Retention policies help manage storage space and comply with data retention requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Offsets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Offsets represent the position of a consumer within a partition.&lt;/li&gt;
&lt;li&gt;Consumers keep track of the offsets to know which messages they have already processed.&lt;/li&gt;
&lt;li&gt;Kafka provides different offset management strategies, such as automatic offset commits or manual offset control.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Auto Offset Reset:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The auto offset reset configuration determines the behavior when a consumer starts reading from a topic without a committed offset.&lt;/li&gt;
&lt;li&gt;It can be set to "earliest" (start from the beginning) or "latest" (start from the most recent message).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Acknowledgment (ACK):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Acknowledgment settings control the reliability of message delivery.&lt;/li&gt;
&lt;li&gt;Producers can wait for acknowledgments from the Kafka brokers to ensure that messages are persisted.&lt;/li&gt;
&lt;li&gt;The "acks" configuration allows trade-offs between latency and durability.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Conclusion:&lt;br&gt;
Apache Kafka's distributed architecture, pub-sub model, and configurable options make it a powerful tool for building scalable and fault-tolerant streaming applications. Kafka's capabilities to process and analyze real-time data streams efficiently explains why its heavily used in real time data engineering and machine learning work flow.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Zoom camp rising wave workshop</title>
      <dc:creator>Okibaba</dc:creator>
      <pubDate>Mon, 18 Mar 2024 14:56:22 +0000</pubDate>
      <link>https://dev.to/okibaba/zoom-camp-rising-wave-workshop-1h00</link>
      <guid>https://dev.to/okibaba/zoom-camp-rising-wave-workshop-1h00</guid>
      <description>&lt;p&gt;This month I attended the risingwave workshop hosted by datatalks for the 2024 cohort of the zoomcamp data engineering course.&lt;/p&gt;

&lt;p&gt;Risingwave is an open-source, cloud-native streaming database system designed for real-time analytics and event-driven applications. With risingwave you can handle streaming data using sql-like queries, making it very powerful for scenarios like; real-time monitoring, anomaly detection, event-driven architectures, and continuous data transformation.&lt;/p&gt;

&lt;p&gt;As a quick demo of how sql-like risingwave is, lets create a materialized view to compute the average, min and max trip time between taxi zone as well as find the top 10 maximum trip time for a route pair taking into consideration trip direction (i.e trip from a to b is different from trip from b to a).Data we are working with is the New York openly available yellow taxi data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE MATERIALIZED VIEW mv_avg_min_max_trip_time AS 
SELECT 
    pu_zone.Zone AS pickup_zone, 
    do_zone.Zone AS dropoff_zone, 
    AVG(EXTRACT(EPOCH FROM (trip_data.tpep_dropoff_datetime - trip_data.tpep_pickup_datetime)) / 60) AS avg_trip_duration, 
    MIN(EXTRACT(EPOCH FROM (trip_data.tpep_dropoff_datetime - trip_data.tpep_pickup_datetime)) / 60) AS min_trip_duration, 
    MAX(EXTRACT(EPOCH FROM (trip_data.tpep_dropoff_datetime - trip_data.tpep_pickup_datetime)) / 60) AS max_trip_duration 
FROM 
    trip_data 
JOIN 
    taxi_zone pu_zone ON trip_data.PULocationID = pu_zone.location_id 
JOIN 
    taxi_zone do_zone ON trip_data.DOLocationID = do_zone.location_id 
GROUP BY 
    pu_zone.Zone, 
    do_zone.Zone; 

SELECT 
    pickup_zone, 
    dropoff_zone, 
    max_trip_duration
FROM 
    mv_avg_min_max_trip_time 
ORDER BY 
    max_trip_duration DESC 
LIMIT 10;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;br&gt;
datatalks risingwave workshop link&lt;br&gt;
&lt;a href="https://github.com/risingwavelabs/risingwave-data-talks-workshop-2024-03-04/blob/main/workshop.md"&gt;https://github.com/risingwavelabs/risingwave-data-talks-workshop-2024-03-04/blob/main/workshop.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Data talks data engineering course repo (week 6)&lt;br&gt;
&lt;a href="https://github.com/DataTalksClub/data-engineering-zoomcamp"&gt;https://github.com/DataTalksClub/data-engineering-zoomcamp&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Zoom camp week 5 - Batch Processing : SPARK</title>
      <dc:creator>Okibaba</dc:creator>
      <pubDate>Mon, 04 Mar 2024 17:34:21 +0000</pubDate>
      <link>https://dev.to/okibaba/zoom-camp-week-5-spark-4n68</link>
      <guid>https://dev.to/okibaba/zoom-camp-week-5-spark-4n68</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffo8zk2n26yiuasrq6sfz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffo8zk2n26yiuasrq6sfz.png" alt="Image description" width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Data engineering zoom camp course week 5 was all about batch data processing using Apache Spark.&lt;/p&gt;

&lt;p&gt;Data engineering zoomcamp course link:&lt;br&gt;
&lt;a href="https://github.com/DataTalksClub/data-engineering-zoomcamp"&gt;https://github.com/DataTalksClub/data-engineering-zoomcamp&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
