<?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: muriuki muriungi erick</title>
    <description>The latest articles on DEV Community by muriuki muriungi erick (@ndurumo254).</description>
    <link>https://dev.to/ndurumo254</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%2F816024%2F469dc92a-a792-4cd5-b143-6f8ad8ec9995.jpeg</url>
      <title>DEV Community: muriuki muriungi erick</title>
      <link>https://dev.to/ndurumo254</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ndurumo254"/>
    <language>en</language>
    <item>
      <title>The easiest way to navigate through MongoDB, PySpark, and Jupyter Notebook</title>
      <dc:creator>muriuki muriungi erick</dc:creator>
      <pubDate>Sat, 18 Nov 2023 16:20:46 +0000</pubDate>
      <link>https://dev.to/ndurumo254/the-easiest-way-to-navigate-through-mongodb-pyspark-and-jupyter-notebook-3f4g</link>
      <guid>https://dev.to/ndurumo254/the-easiest-way-to-navigate-through-mongodb-pyspark-and-jupyter-notebook-3f4g</guid>
      <description>&lt;p&gt;I strongly believe that open source is the future. In our modern-day software development cycle, there is a huge interest in the open source project. This is attributed to the fact that such an approach ends up saving cost in the development, making the development more flexible as well as encouraging innovation.&lt;/p&gt;

&lt;p&gt;MongoDB:  This is basically an open-source document database that can be used to store both structured and unstructured data, using JSON-like format to store documents&lt;br&gt;
Jupyter Notebook: This is one of the commonly used open-source tools that has revolutionized the data science landscape. It is easy to create and share documents containing code, equations, and visualization. Recently, jupyter Notebook has evolved into jupyterLab, which adds additional functionality, such as a command line, terminal, and editor.&lt;/p&gt;

&lt;p&gt;Pyspark: This is basically the Python API for Apache Spark, an open-source cluster computing framework. The popular concept of the spark is distributed computing.&lt;/p&gt;

&lt;p&gt;To start, we will first install MongoDB, pyspark, and jupyterlab. These tools can easily be installed using docker-compose. All the services we will be using will be defined in this file. For the containers inside docker to communicate efficiently, we need to define a custom network. For this case, I defined custorm network as my-network. This network will isolate containers from the external networks. All services will be defined in the docker-compose file, and it will look as follows. To create a docker container, you should navigate to the directory housing the docker file and run docker compose up -d. That all for our setup&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--upCwGEcf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rhqyy6t6qj3smi07fzw1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--upCwGEcf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rhqyy6t6qj3smi07fzw1.png" alt="Image description" width="551" height="716"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Loading data to MongoDB&lt;/strong&gt;&lt;br&gt;
It is simple to use MongoDB compass to import as well as export data to and from the MongoDB collection. MongoDB compass supports both CSV and json file formats. For our illustrations, we will use an electric vehicle dataset found in [(&lt;a href="https://catalog.data.gov/dataset/electric-vehicle-population-data)"&gt;https://catalog.data.gov/dataset/electric-vehicle-population-data)&lt;/a&gt;] . This is what our Mongodb compass will look like after importing the data. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---7OMaVrH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tv66t92k6kyfhjbx5e8h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---7OMaVrH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tv66t92k6kyfhjbx5e8h.png" alt="Image description" width="800" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To verify that the data is correctly imported to the mongoDB, we can query this data from the terminal of our desktop machine. We will achieve this by following the following steps.&lt;br&gt;
1.Select the database: this is done using the use command. For example, I created the database named EV and collection data; therefore, I will run use EV in the terminal.&lt;br&gt;
2.Query Data: this can be achieved using the find method. For my case the method will be like  db.data.find()&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--We2jtdX3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x888ur2yo1kqvq0mqcus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--We2jtdX3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x888ur2yo1kqvq0mqcus.png" alt="Image description" width="800" height="487"&gt;&lt;/a&gt;&lt;br&gt;
As seen above, we are sure that we have imported data correctly to our Mongodb. Now we can use spark to load the data to jupyter lab.&lt;/p&gt;

&lt;p&gt;1.Import required libraries&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DOokK3n9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/77z1jjhgouxijzkunfku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DOokK3n9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/77z1jjhgouxijzkunfku.png" alt="Image description" width="738" height="117"&gt;&lt;/a&gt;&lt;br&gt;
2.Start Spark Session&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YHlCCocn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n84957pqe2af04cb7lwv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YHlCCocn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n84957pqe2af04cb7lwv.png" alt="Image description" width="800" height="88"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.Create a connection and read the data&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sg6q2Gjp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9mc33374xkc3h09voxmm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sg6q2Gjp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9mc33374xkc3h09voxmm.png" alt="Image description" width="800" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.Check data type &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZSXQnhft--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pl7k4214xi5mq4vtfbhg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZSXQnhft--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pl7k4214xi5mq4vtfbhg.png" alt="Image description" width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5.View the data&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9928Y8gx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7z1mqe9989yqxu2zotf3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9928Y8gx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7z1mqe9989yqxu2zotf3.png" alt="Image description" width="800" height="352"&gt;&lt;/a&gt;&lt;br&gt;
As seen from the above procedure, we can conclude that creating a data pipeline from Mongodb to pyspark is elementary. The procedure is straightforward and very efficient. Happy coding!!!&lt;br&gt;
find complete project [&lt;a href="https://github.com/ndurumo254/mongodb"&gt;https://github.com/ndurumo254/mongodb&lt;/a&gt;]&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>dataengineering</category>
      <category>mongodb</category>
      <category>etl</category>
    </item>
    <item>
      <title>Hashmap in python.</title>
      <dc:creator>muriuki muriungi erick</dc:creator>
      <pubDate>Mon, 22 May 2023 12:59:50 +0000</pubDate>
      <link>https://dev.to/ndurumo254/hashmap-in-python-30ij</link>
      <guid>https://dev.to/ndurumo254/hashmap-in-python-30ij</guid>
      <description>&lt;p&gt;&lt;strong&gt;Hashmap in python.&lt;/strong&gt;&lt;br&gt;
Hashmaps are indexed data structures which are also known as hash tables. They are used to compute the index with a key into an array of slots. Hashmaps are unique and immutable. Ideally hashmaps will store key-value pairs and the key are generated using a hash function.&lt;br&gt;
Hashmaps can be compared to closet having several drawers where each drawer is used to store specific clothes. These drawers are labelled with the name of clothes they store. Hashmaps makes it easier and faster to access data.&lt;br&gt;
In python hashmaps are implemented using built in function called dictionary. To understand more about the application of hash map I have used this example from letcode (&lt;a href="https://leetcode.com/problems/two-sum/description/"&gt;https://leetcode.com/problems/two-sum/description/&lt;/a&gt;)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.&lt;br&gt;
You may assume that each input would have exactly one solution, and you may not use the same element twice.&lt;br&gt;
You can return the answer in any order.&lt;/p&gt;

&lt;p&gt;Example 1:&lt;br&gt;
Input: nums = [2,7,11,15], target = 9&lt;br&gt;
Output: [0,1]&lt;br&gt;
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].&lt;/p&gt;

&lt;p&gt;Example 2:&lt;br&gt;
Input: nums = [3,2,4], target = 6&lt;br&gt;
Output: [1,2]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As we can see we have a list of values stored in a variable named nums&lt;br&gt;
Also, we have a target that is the sum of two values from the list&lt;br&gt;
We are supposed to find the two values in the list those add up to the target and give them as an array. This is how we can achieve this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Solution(object):
    def twoSum(self, nums, target):
    #initialize the hashmap to sore the values
        compliment_dict= {}
     #loop through the values in the list
        for values in range(len(nums)):
            compliment= target-nums[values]
            if compliment in compliment_dict:
                return compliment_dict[compliment],values
            compliment_dict[nums[values]] = values

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Here hashmap is used to store the element of an array. We iterate through the array and for each element we check for the compliment (target- current element). If the compliment exists in the hashmap it means  that we have two numbers those can add up to the target.&lt;/p&gt;

</description>
      <category>python</category>
      <category>datascience</category>
      <category>programming</category>
    </item>
    <item>
      <title>Simplest pyspark tutorial</title>
      <dc:creator>muriuki muriungi erick</dc:creator>
      <pubDate>Wed, 19 Apr 2023 10:04:04 +0000</pubDate>
      <link>https://dev.to/ndurumo254/simplest-pyspark-tutorial-414</link>
      <guid>https://dev.to/ndurumo254/simplest-pyspark-tutorial-414</guid>
      <description>&lt;p&gt;If data is the new oil, then Spark will be the new engine. In the recent few years, we have witnessed exponential growth in data. This is due to the increased use of smart devices and sensors that collect data in real-time. Businesses that will master how to use such data will outdo their counterparts in making intelligent decisions. To make an intelligent decision from such data, we need to understand and process it. Spark comes in handy when we want to process huge data sets because it uses parallel clusters during data processing. I am going to cover some basics of Spark. Spark supports different languages, and in this tutorial, I will be using Python. Before proceeding, set your environment and install Pyspark on your machine. I am using this dataset &lt;br&gt;
(&lt;a href="https://drive.google.com/file/d/1b2oL92aRU5_xLkGBoxLwBfWY5MYv9xpG/view?usp=sharing"&gt;https://drive.google.com/file/d/1b2oL92aRU5_xLkGBoxLwBfWY5MYv9xpG/view?usp=sharing&lt;/a&gt;)&lt;br&gt;
To create a spark resilient distributed dataset (RDD), we start by creating a SparkSession. Sparksession is an object that a programmer creates using a SparkSession builder pattern. Spark session is the first code in the Spark program. Spark session includes all the available Apis in different contexts. These APIS incldes.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; SparkContext&lt;/li&gt;
&lt;li&gt; StreamingContext&lt;/li&gt;
&lt;li&gt; SQLContext&lt;/li&gt;
&lt;li&gt; HiveContext&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The following line of code will create our session in this tutorial.&lt;br&gt;
&lt;code&gt;from pyspark.sql import SparkSession&lt;br&gt;
spark= SparkSession.builder.appName('Erick').getOrCreate()&lt;br&gt;
df_spark= spark.read.csv('salary.csv')&lt;br&gt;
df_spark.show()&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
SparkSession.builder() returns a builder class with methods such as  master(), appName(),and getOrCreate(). After creating the session the following lines of code loads our data sets and the data is stored in the data frame named df_spark. When we execute df_spark.show() we will get the following output&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ztPcPG4s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ww5j80zm1om0z1fvo8m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ztPcPG4s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9ww5j80zm1om0z1fvo8m.png" alt="Image description" width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By default, the Spark will display the first 20 rows. However, as seen in the output, the header of the dataset is wrongly placed. To write this correctly, we have to set the header to true. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;df_spark=spark.read.option('header','true').csv('salary.csv')&lt;br&gt;
df_spark.show()&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
The output should now be as follows;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nlnWZl19--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mn1wcttwna4vbibqw1du.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nlnWZl19--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mn1wcttwna4vbibqw1du.png" alt="Image description" width="800" height="372"&gt;&lt;/a&gt;&lt;br&gt;
The headers are now correctly shown. We can see the number of rows by running&lt;br&gt;&lt;br&gt;
&lt;code&gt;df_spark.head(5)&lt;/code&gt;&lt;br&gt;
In this case, I have specified the number of rows to be 5, but you can specify to any number. When you execute this, your output should look like &lt;br&gt;
&lt;code&gt;[Row(MMM-YY='1/1/2016', Emp_ID=1, Age=28, Gender='Male', City='C23', Education_Level='Master', Salary=57387),&lt;br&gt;
 Row(MMM-YY='2/1/2016', Emp_ID=1, Age=28, Gender='Male', City='C23', Education_Level='Master', Salary=57387),&lt;br&gt;
 Row(MMM-YY=None, Emp_ID=None, Age=None, Gender=None, City=None, Education_Level=None, Salary=None),&lt;br&gt;
 Row(MMM-YY='11/1/2017', Emp_ID=2, Age=31, Gender='Male', City='C7', Education_Level='Master', Salary=67016),&lt;br&gt;
 Row(MMM-YY='12/1/2017', Emp_ID=2, Age=31, Gender='Male', City='C7', Education_Level='Master', Salary=67016)]&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Pyspark enables us to see the datatypes of each column by executing the printschema() method. Before this, we should set inferschema to True when loading the dataset. This is done as &lt;/p&gt;

&lt;p&gt;&lt;code&gt;df_spark=spark.read.option('header','true').csv('salary.csv', inferSchema=True)&lt;/code&gt;&lt;br&gt;
Then we should check the datatype of schema by &lt;br&gt;
&lt;code&gt;df_spark.printSchema()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;When we run this, we should be able to see  the datatypes in the following format.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nOkaCckN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j6m4lrwq9iasvb8054qc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nOkaCckN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j6m4lrwq9iasvb8054qc.png" alt="Image description" width="800" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you printschema before  setting inferSchema = True, your output will be as follows &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4k_syT9O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lica430a6eve6aan5ypi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4k_syT9O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lica430a6eve6aan5ypi.png" alt="Image description" width="800" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is because Spark, by default, will interpret everything as a string&lt;br&gt;
This tutorial will cover select and drop functions in Spark, renaming columns, filling the missing values, filtering, and grouping by functions in Spark.&lt;br&gt;
&lt;strong&gt;Select function.&lt;/strong&gt;&lt;br&gt;
To select the column from the dataset or data frame Select() is used. When selecting Age, gender, City, Education_Level, and Salary, we can use the following syntax.&lt;br&gt;
&lt;code&gt;df_spark.select(['Age','gender','City','Education_Level','Salary']).show()&lt;/code&gt;&lt;br&gt;
When we select these columns, our output will be as follows,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rR1on-ZQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a5t2fw2y9pqqdqraa6j0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rR1on-ZQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a5t2fw2y9pqqdqraa6j0.png" alt="Image description" width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sometimes we might need to add a column in the dataset. For example, we can add a column for age after 5years &lt;br&gt;
&lt;code&gt;df_spark.withColumn('age after 5 years',df_spark['age']+5).show()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The output of this line is as follows.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Fb4XoT1g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2tt7eng6lzwa1wha7iu9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Fb4XoT1g--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2tt7eng6lzwa1wha7iu9.png" alt="Image description" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At times we can have columns that are irrelevant to our datasets.for example we might not be in need of  Emp_ID in our analysis. Therefore we can drop it as &lt;br&gt;
&lt;code&gt;df_spark.drop('Emp_ID').show()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lYgGU6aS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i938w1iyqsl9wupljtm4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lYgGU6aS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i938w1iyqsl9wupljtm4.png" alt="Image description" width="800" height="305"&gt;&lt;/a&gt;&lt;br&gt;
As seen above, the Emp_ID has been deleted. &lt;br&gt;
We can also need to rename specific columns, which can be done as follows.&lt;br&gt;
&lt;code&gt;df_spark.withColumnRenamed('MMM-YY','date_employed').show()&lt;/code&gt;&lt;br&gt;
This will rename MMM-YY to date_employed. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wkIgauIa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bmrgyg3gb2qizio2o3cw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wkIgauIa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bmrgyg3gb2qizio2o3cw.png" alt="Image description" width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We also need to have means of handling the missing data in the dataset. We can either drop the rows with missing values or fill in the missing values.we can decide to drop all the rows with the missing values and this is done as follows &lt;br&gt;
&lt;code&gt;df_spark.na.drop().show()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;When we look at the output of this, we notice that all rows with some missing values have been deleted. The output will be as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QP_ASNwa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0mbpugkpcppxhznnm290.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QP_ASNwa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0mbpugkpcppxhznnm290.png" alt="Image description" width="800" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can also give some conditions using a threshold. For example, we can decide to delete rows with more than two missing values. This can be done as &lt;br&gt;
&lt;code&gt;df_spark.na.drop(how='any',thresh=2).show()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The output of this is as shown below. Rows with one missing value have not to be deleted&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Mxx39FlG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9u2hs8ahayumhr4lta0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Mxx39FlG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9u2hs8ahayumhr4lta0n.png" alt="Image description" width="800" height="356"&gt;&lt;/a&gt;&lt;br&gt;
We can also decide to delete specific rows with missing values. This is done as follows&lt;br&gt;
&lt;code&gt;df_spark.na.drop(how="any",subset=['city']).show()&lt;/code&gt;&lt;br&gt;
Here we will delete all city column rows with missing values. The output is as follows&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SNTESoKQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yuttvw6tpeiz7346udpa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SNTESoKQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yuttvw6tpeiz7346udpa.png" alt="Image description" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can also decide to fill in the missing values rather than deleting them. This can be done as follows&lt;br&gt;
&lt;code&gt;df_spark.na.fill('missing value',['age','salary']).show()&lt;/code&gt;&lt;br&gt;
Here all the missing values in the age and salary columns will be filled with (missing value). The output is as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rin_LM7Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ifaa2z2wgy67r168fz58.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rin_LM7Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ifaa2z2wgy67r168fz58.png" alt="Image description" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pyspark has a class pyspark.ml.feature .Imputer that is used for completing missing values using mean, mode or median of the column that has a missing value. The input column of this class should be numeric because the class is not currently supporting categorical features. This class is used as shown below&lt;br&gt;
&lt;code&gt;from pyspark.ml.feature import Imputer&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;imputer = Imputer(&lt;br&gt;
    inputCols = ['Age',  'Salary'],&lt;br&gt;
    outputCols = ["{}_imputed".format(a) for a in ['Age ', 'salary']]&lt;br&gt;
).setStrategy("median")&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;imputer.fit(df_spark).transform(df_spark).show()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The output of this will add Age_imputed and Salary_imputed columns, as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TAe9TqT2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eagcpz6ojhz042rta5uu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TAe9TqT2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eagcpz6ojhz042rta5uu.png" alt="Image description" width="800" height="356"&gt;&lt;/a&gt;&lt;br&gt;
We can also need to filter our results. For example, we can filter ages equal to or below 30 years  as &lt;br&gt;
&lt;code&gt;df_spark.filter("Age &amp;lt;= 30").show()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The output of this becomes  as seen the displayed ages are below 31 years &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IVTSm9nP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/02ynl3oc9mxv1pt1rttu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IVTSm9nP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/02ynl3oc9mxv1pt1rttu.png" alt="Image description" width="800" height="356"&gt;&lt;/a&gt;&lt;br&gt;
We can also select columns to be filtered as &lt;br&gt;
&lt;code&gt;df_spark.filter("Age &amp;lt;= 30").select(['Gender','Education_Level','salary']).show()&lt;/code&gt;&lt;br&gt;
The output becomes &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a8l9OoSF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zb5z5y0ptsbhtzn899t5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a8l9OoSF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zb5z5y0ptsbhtzn899t5.png" alt="Image description" width="800" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We might also need to use more than one condition statement. Such as we can need to filter both salary and age as &lt;/p&gt;

&lt;p&gt;&lt;code&gt;df_spark.filter((df_spark['Age']&amp;lt;=30)&amp;amp; &lt;br&gt;
                (df_spark['Salary']&amp;gt;= 170000)).select(['Gender','Education_Level','salary']).show()&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
The output becomes &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GZpg0cjv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/96jhic7qqfrcwogl2wtz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GZpg0cjv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/96jhic7qqfrcwogl2wtz.png" alt="Image description" width="800" height="224"&gt;&lt;/a&gt;&lt;br&gt;
 We can use not comparison statement as &lt;br&gt;
&lt;code&gt;df_spark.filter(~((df_spark['Age']&amp;lt;=30)&amp;amp; &lt;br&gt;
                (df_spark['Salary']&amp;gt;=170000)))&lt;br&gt;
                 .select(['Gender','Education_Level','salary']).show()&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
The output becomes &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9dKfjmGU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lwwtgw17uu88o277jsgz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9dKfjmGU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lwwtgw17uu88o277jsgz.png" alt="Image description" width="800" height="468"&gt;&lt;/a&gt;&lt;br&gt;
We can also need to group our data into various columns. For example, we can group salary with education_level and gender as &lt;br&gt;
&lt;code&gt;df_spark.groupBy('Education_Level','Gender').max('salary').show()&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
The output is as &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wd07O7lX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0t3ovdpcp8fk3h6wh3hx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wd07O7lX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0t3ovdpcp8fk3h6wh3hx.png" alt="Image description" width="800" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In summary, pyspark is the Python API for Apache spark that helps data developers to carry out data processing tasks on large datasets using distributed computing framework. The select () function is used in the selection of a specific column from a data frame. It can take one or multiple names of the column as an argument, and it returns a new data frame with only the selected column. The drop () function is used to delete one or more columns from the data frames. It takes the columns to be deleted as its arguments and returns a new dataframe without the deleted columns. Another function we have used in this tutorial is a withColumnRenamed () function. This function is used to rename a specific column in the data frame. It takes two arguments first, the name of the old column followed by the new name and it will return the renamed column. Finally, we looked at the groupBy() function that is used to group data in the data frame by one or more columns. It returns grouped data frame that can be used to [perform operations such as sum, count,or mean in the grouped data.&lt;/p&gt;

&lt;p&gt;Good news.. you can find full notebook here  (&lt;a href="https://drive.google.com/file/d/1Iy69g13tzCCksbl8DLuQevnq2kWJns3d/view?usp=sharing"&gt;https://drive.google.com/file/d/1Iy69g13tzCCksbl8DLuQevnq2kWJns3d/view?usp=sharing&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;You can follow me  (&lt;a href="https://twitter.com/ErickNdurumo"&gt;https://twitter.com/ErickNdurumo&lt;/a&gt;) or (&lt;a href="http://www.linkedin.com/in/erick-muriungi-1500a6122"&gt;http://www.linkedin.com/in/erick-muriungi-1500a6122&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Happy coding!!!&lt;/p&gt;

</description>
      <category>spark</category>
      <category>bigdata</category>
      <category>machinelearning</category>
      <category>sql</category>
    </item>
    <item>
      <title>Code optimization</title>
      <dc:creator>muriuki muriungi erick</dc:creator>
      <pubDate>Mon, 03 Apr 2023 12:18:50 +0000</pubDate>
      <link>https://dev.to/ndurumo254/code-optimization-51ak</link>
      <guid>https://dev.to/ndurumo254/code-optimization-51ak</guid>
      <description>&lt;h2&gt;
  
  
  This is part of everyday thoughts in python,data engineering and machine learning
&lt;/h2&gt;

&lt;p&gt;It's important to consider the complexity of a function call. Basically, if we have a complex call in our program, the program becomes slower. Sometimes complexity might find its way into our workspace when dealing with function calls. It's, therefore, a good practice to look keenly for any recursive or nested functions since they are the main cause of slowing our code. To understand this, let's have a sample of the Fibonacci function&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def fib (n):
    if n &amp;lt;=1 :
        return n
    else:
        return  fib(n-1) + fib(n-2)
result= fib(10)
print(result)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Time complexity of the above code is O(2^n)&lt;/p&gt;

&lt;p&gt;Here the 10th number in the Fibonacci sequence is calculated by recursively calling the Fibonacci function with a smaller function argument until it reaches the base case of n=0 and n=1. In such cases, the algorithm's time complexity grows exponentially first in cases of huge values of n. in practice; we would like to use a friendly algorithm to minimize calculation repetitions. A friendly algorithm for such a scenario can be as given below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def fib_optimized(n):
    if n &amp;lt; 2:
        return n
    else:
        fib_prev, fib_curr = 0, 1
        for i in range(2, n+1):
            fib_next = fib_prev + fib_curr
            fib_prev = fib_curr
            fib_curr = fib_next
        return fib_curr
result = fib_optimized(10)
print(result)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The  time complexity for the above function is O(n) hence more optimized.&lt;br&gt;
From this, we can take home some points in comparison between an algorithm's time complexity and a function call's time complexity.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The time complexity of an algorithm depends on the size of the input data, and it is basically the amount of time taken for an algorithm to solve a certain problem&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The time complexity of a function depends on the function itself.&lt;br&gt;
Therefore it is vital to select the right algorithm for the problem at hand and optimize the algorithm as much as possible to minimize the unnecessary complexity.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;happy learning!!&lt;/p&gt;

</description>
      <category>python</category>
      <category>datascience</category>
      <category>dataengineering</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Python functions and lambda functions in data engineering.</title>
      <dc:creator>muriuki muriungi erick</dc:creator>
      <pubDate>Mon, 20 Feb 2023 12:26:02 +0000</pubDate>
      <link>https://dev.to/ndurumo254/python-functions-and-lambda-functions-in-data-engineering-2nfe</link>
      <guid>https://dev.to/ndurumo254/python-functions-and-lambda-functions-in-data-engineering-2nfe</guid>
      <description>&lt;p&gt;Data engineering involves processes that aim to transform raw data into valuable insights. These processes include data ingestion, cleaning, transformation, and integration. Python has emerged as one of the most popular programming languages in data engineering. Python provides a wide range of libraries and functions that make data engineering a seamless process. In this blog, we will discuss how to use Python functions and lambda functions in data engineering to perform data manipulation, transformation, and cleaning tasks&lt;/p&gt;

&lt;h2&gt;
  
  
  Python Functions in Data Engineering
&lt;/h2&gt;

&lt;p&gt;Functions are an essential aspect of any programming language, and Python is no exception. Functions in Python are used to group a set of statements that can be reused in a program. Functions play a crucial role in data engineering as they are used to perform a variety of data manipulation tasks. Some of the commonly used functions in data engineering include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; map() function - The map() function is used to apply a function to each item in an iterable object. This function is often used to convert data types or to perform calculations on a dataset.&lt;/li&gt;
&lt;li&gt; filter() function - The filter() function is used to filter out elements from a dataset that do not meet a specific condition. This function is often used to remove outliers or to remove irrelevant data.&lt;/li&gt;
&lt;li&gt; reduce() function - The reduce() function is used to perform a computation on a dataset by applying a function repeatedly to the dataset's elements. This function is often used to calculate the sum, average, or product of a dataset.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here are some of the ways functions are used in data engineering:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Data Cleaning: Functions are used to clean and preprocess data. For instance, functions can be used to handle missing values, outliers, and inconsistencies in data.&lt;/li&gt;
&lt;li&gt; Data Transformation: Functions can be used to convert data types, manipulate data, and create new features. For instance, functions can be used to compute summary statistics, aggregate data, or calculate the difference between two dates.&lt;/li&gt;
&lt;li&gt; Data Integration: Functions can be used to combine multiple datasets, join tables, or merge columns.&lt;/li&gt;
&lt;li&gt; Data Analysis: Functions can be used to perform data analysis, such as computing statistical measures, generating visualizations, and identifying patterns.
Here is an example of a Python function that computes the mean of a dataset:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KuyilRTm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ut0byc0wfv3eg0o7lmmt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KuyilRTm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ut0byc0wfv3eg0o7lmmt.png" alt="Image description" width="800" height="48"&gt;&lt;/a&gt;&lt;br&gt;
This function takes a list of numbers as input and returns the mean value of the list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lambda Functions in Data Engineering:
&lt;/h2&gt;

&lt;p&gt;Lambda functions, also known as anonymous functions, are functions that are defined without a name. Lambda functions are a compact way to define small, one-line functions that can be used as arguments to other functions. Lambda functions are commonly used in data engineering for tasks that require a short and concise function. Some of the commonly used lambda functions in data engineering include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Sorting - Lambda functions are used to sort a dataset based on a specific key.&lt;/li&gt;
&lt;li&gt; Filtering - Lambda functions are used to filter out data that meets a specific condition.&lt;/li&gt;
&lt;li&gt; Mapping - Lambda functions are used to map a function to each element in a dataset.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here are some of the ways lambda functions are used in data engineering:&lt;br&gt;
Sorting: Lambda functions can be used to sort a dataset based on a specific key. For instance, to sort a list of dictionaries &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9U58brTQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wntk3mkxaeadgjl5dci2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9U58brTQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wntk3mkxaeadgjl5dci2.png" alt="Image description" width="800" height="25"&gt;&lt;/a&gt;&lt;br&gt;
Filtering: Lambda functions can be used to filter out data that meets a specific condition. For instance, to filter out all values greater than a specific threshold, you can use a lambda function as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZLcd3f-8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gxz90cu7i9uyrha2vi5s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZLcd3f-8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gxz90cu7i9uyrha2vi5s.png" alt="Image description" width="800" height="25"&gt;&lt;/a&gt;&lt;br&gt;
Mapping: Lambda functions can be used to apply a function to each element in a dataset. For instance, to convert a list of strings to uppercase, you can use a lambda function as follows&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zedSAnHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vg0fx0phe9dctao88xq6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zedSAnHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vg0fx0phe9dctao88xq6.png" alt="Image description" width="800" height="25"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;happy data engineering practice!!!&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>python</category>
      <category>lambda</category>
      <category>functions</category>
    </item>
    <item>
      <title>Using python dictionary in data engineering.</title>
      <dc:creator>muriuki muriungi erick</dc:creator>
      <pubDate>Sun, 19 Feb 2023 08:14:20 +0000</pubDate>
      <link>https://dev.to/ndurumo254/using-python-dictionary-in-data-engineering-3oec</link>
      <guid>https://dev.to/ndurumo254/using-python-dictionary-in-data-engineering-3oec</guid>
      <description>&lt;p&gt;Python dictionaries are a powerful data structure that can be useful in many data engineering applications. In this blog, we'll explore some of the ways that you can use Python dictionaries in data engineering, including how to create and manipulate dictionaries, and how to use them in various data processing tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Python Dictionary?
&lt;/h2&gt;

&lt;p&gt;A Python dictionary is a collection of key-value pairs that allows you to store and retrieve data using a key. Dictionaries are one of the core data structures in Python, and are commonly used in a variety of applications, including data engineering. Here's an example of a simple dictionary in Python:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuibls2nyoahhmfxkd8c3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuibls2nyoahhmfxkd8c3.png" alt=" " width="800" height="24"&gt;&lt;/a&gt;&lt;br&gt;
In this dictionary, the keys are 'key1', 'key2', and 'key3', and the values are 'value1', 'value2', and 'value3', respectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating and Accessing Dictionaries
&lt;/h2&gt;

&lt;p&gt;To create a dictionary in Python, you can use the curly braces {} and separate the key-value pairs with colons. Here's an example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu7f3b84rukrgsnazon97.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu7f3b84rukrgsnazon97.png" alt=" " width="800" height="24"&gt;&lt;/a&gt;&lt;br&gt;
You can also create a dictionary using the dict() function, which takes a sequence of key-value pairs as an argument. For example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4wberh2m2epyanfuu5k4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4wberh2m2epyanfuu5k4.png" alt=" " width="800" height="24"&gt;&lt;/a&gt;&lt;br&gt;
Once you have created a dictionary, you can access its values by using the keys. For example, to access the value associated with the 'name' key in the dictionary above, you can use the following code:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu2lb0o9d4fem2nig0hty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu2lb0o9d4fem2nig0hty.png" alt=" " width="800" height="24"&gt;&lt;/a&gt;&lt;br&gt;
This will output 'Alice'.&lt;/p&gt;

&lt;h2&gt;
  
  
  Manipulating Dictionaries
&lt;/h2&gt;

&lt;p&gt;Dictionaries are mutable, which means that you can add, delete, and modify key-value pairs in the dictionary. Here are some of the ways that you can manipulate dictionaries in Python:&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding Key-Value Pairs
&lt;/h2&gt;

&lt;p&gt;To add a new key-value pair to a dictionary, you can simply assign a value to a new key&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F560gxm37l2edttmddjqj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F560gxm37l2edttmddjqj.png" alt=" " width="800" height="48"&gt;&lt;/a&gt;&lt;br&gt;
This will add a new key 'email' with the value '&lt;a href="mailto:alice@example.com"&gt;alice@example.com&lt;/a&gt;' to the dictionary&lt;/p&gt;

&lt;h2&gt;
  
  
  Modifying Values
&lt;/h2&gt;

&lt;p&gt;To modify the value associated with a key in a dictionary, you can simply reassign the value:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc849z89npua9633qvhil.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc849z89npua9633qvhil.png" alt=" " width="800" height="48"&gt;&lt;/a&gt;&lt;br&gt;
This will change the value associated with the 'age' key from 30 to 31.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deleting Key-Value Pairs
&lt;/h2&gt;

&lt;p&gt;To delete a key-value pair from a dictionary, you can use the del statement:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyejrkkdhgpscvzewualy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyejrkkdhgpscvzewualy.png" alt=" " width="800" height="48"&gt;&lt;/a&gt;&lt;br&gt;
This will remove the 'age' key and its associated value from the dictionary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Dictionaries in Data Engineering
&lt;/h2&gt;

&lt;p&gt;Dictionaries can be used in a variety of data engineering tasks, including data cleaning, data transformation, and data aggregation. Here are some examples of how dictionaries can be used in data engineering:&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Cleaning
&lt;/h2&gt;

&lt;p&gt;Suppose you have a dataset that contains customer information, and you want to clean up the data by standardizing the state names. You could create a dictionary that maps the abbreviated state names to the full state names, and then use that dictionary to replace the abbreviated state names in the dataset&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;happy coding&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>vibecoding</category>
    </item>
    <item>
      <title>Use of python loops in data engineering</title>
      <dc:creator>muriuki muriungi erick</dc:creator>
      <pubDate>Fri, 17 Feb 2023 20:51:19 +0000</pubDate>
      <link>https://dev.to/ndurumo254/use-of-python-loops-in-data-engineering-3peh</link>
      <guid>https://dev.to/ndurumo254/use-of-python-loops-in-data-engineering-3peh</guid>
      <description>&lt;p&gt;Python programming language is rich in a set of tools and libraries used in data engineering. One of the widely used python concepts in data engineering is the python loops which are used to iterate over a collection of data and perform a set of operations on each element. This blog post will explore how to use Python loops for data engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  For Loops
&lt;/h2&gt;

&lt;p&gt;The most common loop type in Python is the for loop, which is used to iterate over a collection of data. The syntax of a for loop is as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rLVXelko--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/agi4z51pk2r9bvtammwq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rLVXelko--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/agi4z51pk2r9bvtammwq.png" alt="Image description" width="800" height="48"&gt;&lt;/a&gt;&lt;br&gt;
Here, collection is the collection of data that we want to iterate over, and element is a variable that will take on the value of each element in the collection in turn. Within the loop, we can perform any operations on element that we like.&lt;/p&gt;

&lt;p&gt;One common use of for loops in data engineering is to read data from a file and process it line by line. For example, suppose we have a file data.csv that contains some data that we want to process. We can use a for loop to read each line of the file and perform some operations on it, like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--keQkn3E---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fwne2gp8be7qwspfz50n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--keQkn3E---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fwne2gp8be7qwspfz50n.png" alt="Image description" width="800" height="74"&gt;&lt;/a&gt;&lt;br&gt;
Here, f is a file object that we can use to read from the file. The with statement is used to ensure that the file is properly closed after we're done with it. Within the loop, line is a string that contains the contents of each line of the file in turn. We can split the line into fields using the split() method, and perform any other operations on the fields that we like.&lt;/p&gt;

&lt;h2&gt;
  
  
  While Loops
&lt;/h2&gt;

&lt;p&gt;Another type of loop in Python is the while loop, which is used to repeat a set of operations until a certain condition is met. The syntax of a while loop is as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NAU8263k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dctyt999yvv6sg1iltyo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NAU8263k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dctyt999yvv6sg1iltyo.png" alt="Image description" width="800" height="48"&gt;&lt;/a&gt;&lt;br&gt;
Here, condition is an expression that evaluates to True or False. The loop will continue to execute as long as condition is True. Within the loop, we can perform any operations that we like.&lt;/p&gt;

&lt;p&gt;One common use of while loops in data engineering is to process data until some condition is met. For example, suppose we have a list of numbers that we want to process, and we want to keep processing them until the sum of the numbers is greater than 100. We can use a while loop to do this, like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iRB4gGQw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6bqa95ka0qkqhv82jx3m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iRB4gGQw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6bqa95ka0qkqhv82jx3m.png" alt="Image description" width="800" height="171"&gt;&lt;/a&gt;&lt;br&gt;
Here, numbers is a list of numbers that we want to process. We initialize total to 0, and use i as an index to iterate over the list. The loop will continue to execute as long as total is less than or equal to 100 and i is less than the length of numbers. Within the loop, we add each element of numbers to total, and perform any other operations on total that we like.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nested Loops
&lt;/h2&gt;

&lt;p&gt;In some cases, we may need to use nested loops in data engineering. Nested loops are loops that are defined inside other loops. For example, suppose we have a list of lists that we want to process, and we want to perform some operations on each element&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The simplest way to differentiate between the data engineers, data scientists and the data analyst.</title>
      <dc:creator>muriuki muriungi erick</dc:creator>
      <pubDate>Mon, 12 Sep 2022 14:10:07 +0000</pubDate>
      <link>https://dev.to/ndurumo254/the-simplest-way-to-differentiate-between-the-data-engineers-data-scientists-and-the-data-analyst-21ei</link>
      <guid>https://dev.to/ndurumo254/the-simplest-way-to-differentiate-between-the-data-engineers-data-scientists-and-the-data-analyst-21ei</guid>
      <description>&lt;p&gt;Taking the three roles as a complete architectural model, we have architecture engineers designing and building the house, lorries and trucks, bringing the building materials and drivers to the construction site&lt;/p&gt;

&lt;h2&gt;
  
  
  Data engineers
&lt;/h2&gt;

&lt;p&gt;Data engineers, in this case, are like architectural engineers. just like the architectural engineers,They will design and build the pipelines to ingest data. They are also responsible for maintaining these pipelines. They are the brains behind how the data will flow from data lakes or data warehouses to the data pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data scientists
&lt;/h2&gt;

&lt;p&gt;Data scientists are like trucks and lorries bringing construction materials to the construction site. Just like the trucks carries the material, data scientists will carry the preprocessed data to the consumer. They will use technologies such as machine learning to make future prediction. They will exploit the data from data pipelines and draw complex insights from such data. &lt;/p&gt;

&lt;h2&gt;
  
  
  Data analysts.
&lt;/h2&gt;

&lt;p&gt;Data analysts. Like the driver ,takes the building materials to the site, data analysts use their skills to drive the data to the consumer. Data analysts examine and combine several datasets to help the business understand the trend in the business. Data analysts are the brains behind making an informed business decisions in an organization. They work with the current data to understand the current business situation of an organization&lt;/p&gt;

</description>
      <category>datascience</category>
    </item>
    <item>
      <title>Management of data in data engineering.</title>
      <dc:creator>muriuki muriungi erick</dc:creator>
      <pubDate>Sat, 10 Sep 2022 13:07:19 +0000</pubDate>
      <link>https://dev.to/ndurumo254/management-of-data-in-data-engineering-34ij</link>
      <guid>https://dev.to/ndurumo254/management-of-data-in-data-engineering-34ij</guid>
      <description>&lt;p&gt;In their line of duty, data engineers come across pipelines built with different technologies, and they need to understand them. Data engineers must have basic knowledge of data storage, analytics, and pipeline to carry out their duty effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  Databases and data warehouses
&lt;/h2&gt;

&lt;p&gt;A database is made up of one or more tables of related data. Dynamic growth in the business sector has necessitated the design of tools to be used in bringing different databases together for the purpose of data analysis. to carry out data analytics reports from various databases, data from these databases are ingested into a central point. A data warehouse is a tool that allows the ingestion of structured data from different databases. Before entering a data warehouse, the data undergoes processes such as validation, preprocessing, and data transformation. Warehouses, however, face the challenge of holding current-era business data because businesses need to handle unstructured and semistructured data&lt;/p&gt;

&lt;h2&gt;
  
  
  Handling of the big and unstructured dataset
&lt;/h2&gt;

&lt;p&gt;Unstructured and semistructured data sets come from digital platforms such as IoT sensors, social media, web and mobile applications, videos and audio platforms etc. These platforms generate data in high velocity and huge volumes compared to structured data sources. Due to the challenges of handling such datasets, there was a need for a big data technology platform. One such technology is the Hadoop open source framework that was designed in the early 2010s. Hadoop was designed to process large datasets on a cluster of computers. Hadoop is managed under distributed file system called the Hadoop distributed file systems. Providers of HDFS include IBM, MAPR, and Cloudera, among others. These packages include distributed data processing frameworks like HIVE, spark,map-reduce etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of public cloud infrastructure
&lt;/h2&gt;

&lt;p&gt;Public cloud infrastructure has an on-demand capacity&lt;br&gt;
Public cloud infrastructures have elastic and limitless scaling&lt;br&gt;
Public cloud infrastructures have global footprints&lt;br&gt;
Public cloud infrastructure has a cost model based on usage&lt;br&gt;
Public cloud infrastructure has freedom of hardware management&lt;br&gt;
In 2013 AWS made amazon redshift available, and they started providing a data warehouse as a cloud-native service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data marts
&lt;/h2&gt;

&lt;p&gt;A repository containing well structured curated as well as the trusted dataset is termed as an enterprise data warehouse (EDW). To measure business performance, business users analysis data in the warehouse. Data in the warehouse contains business subjects such as products, sales, customers etc. data house has four main components. These are;&lt;/p&gt;

&lt;p&gt;Enterprise data warehouse: Hosts the data assets, such as the current and historical datasets.&lt;br&gt;
Source systems- Data sources such as ERP, CRM&lt;br&gt;
ETL pipelines –Loads data to the warehouses&lt;br&gt;
Data consumers – Applications used to consume data from the warehouse&lt;/p&gt;

&lt;h2&gt;
  
  
  Parallel processing
&lt;/h2&gt;

&lt;p&gt;Amazon redshift contains several computer resources.&lt;br&gt;
Each redshift cluster has got two nodes :&lt;br&gt;
• One leader node that interfaces client application to the computer node.&lt;br&gt;
• Multiple computer nodes that store data from the warehouse and run queries in parallel. Each computer node has its own memory and processor separated from each&lt;br&gt;
 other.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dimensional models in data warehouses.
&lt;/h2&gt;

&lt;p&gt;In warehouses, data is stored in relational tables. The two common dimensional models in data warehouses are:&lt;br&gt;
• Star&lt;br&gt;
• Snowflakes&lt;br&gt;
Dimensional models make it easy to filter and retrieve relevant data.&lt;br&gt;
Data marts are built focusing on a single subject of the business repository, such as marketing, finance, or sales. Datamarts are created either through top-down or bottom-up formats.&lt;/p&gt;

&lt;h2&gt;
  
  
  How data is fed into the warehouse
&lt;/h2&gt;

&lt;p&gt;Organizations bring data from different sources into the warehouse through the pipeline. Data pipelines are designed to serve the following purposes:&lt;br&gt;
• Extracting data from the source&lt;br&gt;
• Transformation of the data through validation cleaning and standardizing&lt;br&gt;
• Loading the transformed data to the warehouse of the enterprise.&lt;br&gt;
There are two types of pipelines.&lt;br&gt;
Extract load transform(ELT) pipelines.&lt;br&gt;
Extract transform load(ETL) pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data lake
&lt;/h2&gt;

&lt;p&gt;As earlier stated warehouses are suitable for handling structured dataset. However, business needs to get insights into semistructured and unstructured data set from HTML, JSON data, social media, images etc, for their analysis. Specialized machine learning tools handle such datasets. Data lakes have the ability to handle all kinds of data, may it be structured, unstructured, or even semistructured. Data lakes also handle huge datasets compared to warehouses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data lake archtecture
&lt;/h2&gt;

&lt;p&gt;A data lake has 5 layers. These layers include&lt;br&gt;
• Storage layer: This layer is located at the center of the data lake architecture. It provides virtually low cost of unlimited storage. This layer has got 3 main zones, each with a specific purpose. These zones are:&lt;br&gt;
Landing zone: This zone is also known as a raw zone. This is the zone where the ingestion layer writes the data from data zones. The landing zone stores data permanently from the source.&lt;br&gt;
Clean zone: Also called transform zone. Data from the clean zone is stored in the optimized formats&lt;br&gt;
Curated zone: Also called the enriched zone. Data in the curated zone is optimized and cataloged for the consumption layer.&lt;br&gt;
• Catalog and search layer: Data lakes contain huge structured, semistructured, or unstructured data sets from internal or external of an organization. Different departments use data set in the data lakes in an organization for different purpose, and there is a need for the user to search for the available schemas in the dataset. The catalog and the search layer provide metadata about the hosted data.&lt;br&gt;
• Ingestion layer: This layer connects to different data sources. Data from the ingestion layer is forwarded to the storage layer.&lt;br&gt;
• Processing layer: Data from the storage layer is processed in the processing layer to make it ready for consumption by the consumer. Components of both ingestion and processing layers create ELT pipelines.&lt;br&gt;
• Consumption layer:  The consumer utilizes the processed data through techniques such as interactive query processing and machine learning, among others.&lt;/p&gt;

&lt;p&gt;In the end, I tried to create a simple pipeline in aws. I named it erick254 and selected the location as Africa Capetown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xRk3tase--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/swq7z1brt8mb215uttov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xRk3tase--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/swq7z1brt8mb215uttov.png" alt="Image description" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Introduction to Python for Data Engineering</title>
      <dc:creator>muriuki muriungi erick</dc:creator>
      <pubDate>Wed, 31 Aug 2022 12:53:41 +0000</pubDate>
      <link>https://dev.to/ndurumo254/introduction-to-python-for-data-engineering-lal</link>
      <guid>https://dev.to/ndurumo254/introduction-to-python-for-data-engineering-lal</guid>
      <description>&lt;h2&gt;
  
  
  - 
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Setting up the tools.
&lt;/h2&gt;

&lt;p&gt;To use python, you have to have a code editor and required libraries and modules installed on your pc. This article covers how to run python on jupyter notebook running on vs code. We will start by installing vs code on our machine. Vs code runs on all machines from windows, mac or Linux. If you don't have vs code installed on your computer, visit  &lt;a href="https://code.visualstudio.com/"&gt;https://code.visualstudio.com/&lt;/a&gt;  to download and install. Vs code is open source; therefore, it is free and easy to install. After installing vs code and opening it, your screen will look as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NpoWCD45--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s5v6or5se1rzfh45vv2f.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NpoWCD45--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s5v6or5se1rzfh45vv2f.jpg" alt="Image description" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the extension on the left side of the window, and on the search, type Jupyter notebook&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hb3t1it8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mz4i4ia4v3zi39bpsnzt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hb3t1it8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mz4i4ia4v3zi39bpsnzt.png" alt="Image description" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then click on the jupyter notebook icon and then install it. Repeat the same procedure to any library you want to install in the vs code. After that, install the anaconda on your machine. If you haven't already installed anaconda, visit &lt;a href="https://anaconda.org/"&gt;https://anaconda.org/&lt;/a&gt; for an installation guide. After that, go to the start button on your windows machine and type anaconda prompt&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vFMzLt23--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oxvyaq9zgzi1hbwlppuw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vFMzLt23--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oxvyaq9zgzi1hbwlppuw.png" alt="Image description" width="461" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the anaconda prompt, and you will be directed to the conda terminal. And then create your workspace environment. I created an environment called  datascience_basics and will use python 3.9 in this project. The command to create this env in anaconda will be&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\HP.DESKTOP-QMIMHR3&amp;gt;conda create --name datascience_basics python==3.9
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After running the command, your screen will be as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KrlWI1zB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wwkc49u7pahx0b602s9z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KrlWI1zB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wwkc49u7pahx0b602s9z.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Several packages will be installed, as shown in the screenshot. After that, we have to activate our environment. To activate the environment run the following command in your terminal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\HP.DESKTOP-QMIMHR3&amp;gt;conda activate datascience_basics
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can check whether jupyter is properly installed by running&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Conda list jupyter.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you installed it properly, your screen would be as shown below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZJPNflH0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kpigrylmfepwqo3eq0j5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZJPNflH0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kpigrylmfepwqo3eq0j5.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We shall then navigate to our desktop and create a folder for data science. Then we install jupyter in the created folder.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(datascience_basics) C:\Users\HP.DESKTOP-QMIMHR3&amp;gt;cd Desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(datascience_basics) C:\Users\HP.DESKTOP-QMIMHR3\Desktop&amp;gt;mkdir datascience1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The screen will be as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TjW739ua--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kh3craagynub10c4glqt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TjW739ua--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kh3craagynub10c4glqt.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now open vs code from the terminal using&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(datascience_basics) C:\Users\HP.DESKTOP-QMIMHR3\Desktop&amp;gt;code .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the taskbar of the vs code, click view and then command pallet followed by new jupyter notebook. Your screen should be as shown below&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i1FrRI2S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dzmmme1zn5on20lqgh1b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i1FrRI2S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dzmmme1zn5on20lqgh1b.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
You can change from python to markdown from the top uppermost icon on vs code editor. Now your workspace is set and ready to be used. You will be able to use all python libraries and packages. Jupyter notebook uses dropdown, and your workspace will be as on the screen below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qS2ZVLqz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kxko6ap2ylubixjcv5wk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qS2ZVLqz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kxko6ap2ylubixjcv5wk.png" alt="Image description" width="800" height="516"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why python in data engineering?
&lt;/h2&gt;

&lt;p&gt;Data engineers collect data from different sources and convert it to the right format before delivering it to the right team. Data engineers prepare the data by carrying out activities such as removing repeated data and collecting the missing data, among other data cleaning and pre-processing activities. The cleaned data is then forwarded to the analytic team. Below is a summary of the responsibilities of data engineers.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Ingesting data from various data source&lt;/li&gt;
&lt;li&gt; Carrying out data optimization for data analysis&lt;/li&gt;
&lt;li&gt; Removing corrupted data in the dataset&lt;/li&gt;
&lt;li&gt; Developing, constructing, testing, and maintaining the data structure.
The growth of data engineering has facilitated the growth of data engineering. Big data is a very large dataset that traditional data management systems can not economically analyze. The growth of big data has been facilitated by the growth of IoT, mobile application and smart sensors. As per 2021 IDC data, there were more than 10 billion Connected devices. It is projected that this number will roughly rise to 25.4 billion by the year 2030. This means that more than 15000 million devices will be connected to the internet per second. Because of this, companies, organizations and governments are investing heavily in how to ingest such data and store them for economic purposes. In past years data was mainly structured. Data from mobile apps, website pages and iot is mainly informing of pictures, videos or audio such data is unstructured. We can get data from these devices in the form of the JSON format. Such data is described as being semi-structured. Bid data is described using the five vs the 5vs helps data scientist to deliver valuable insights from the data, and at the same time, it helps in making scientists, analysts and data engineer organizations become customer-centric. These 5vs include:

&lt;ul&gt;
&lt;li&gt;Volume: this is the amount of data existing. When the volume of the data is big enough data is termed to be big data.&lt;/li&gt;
&lt;li&gt;Variety: refers to the diversity of the data types. An organization can receive data from different sources, which sometimes differ in type. The collected data can be either structured,semi-structured or unstructured.&lt;/li&gt;
&lt;li&gt;Velocity: this refers to how fast the data is produced and moved. This aspect is very important for the company to track the movement of data and to make it available at the right time&lt;/li&gt;
&lt;li&gt;Veracity: This is the quality and the value of the data collected. Collected data may contain missing values or wrong formats, making them messy and difficult to use.&lt;/li&gt;
&lt;li&gt;Value: This refers to the usefulness of the data to an organization.
Sometimes data engineering and data scientist sounds as if they are the same. However, these two terms are totally different. To understand the two let's look at their differences.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TPOB7ytP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c7gqkd46gxzndqvv3x23.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TPOB7ytP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c7gqkd46gxzndqvv3x23.png" alt="Image description" width="705" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Data pipelines.
&lt;/h2&gt;

&lt;p&gt;Data is the new form of oil. As the oil moves from crude oil to different oil forms, so does data. Raw data gets into the hands of machine engineers who prepare the data and clean it before giving it to the data scientists. Data scientist manipulates and analyze the data to get different insights. Companies ingest data from a variety of sources, and they need to store this data. To achieve this, data engineers develop and constructs data pipelines. These data pipelines are used to automate the flow of data from one location to another. Depending on the nature of the data source, the data can be processed in either data streams or in batches.&lt;br&gt;
Before doing anything to the system's data, engineers ensure that it flows efficiently in the system. The input of this data can be anything from images, videos, streams of JSON and XML data, timely batches of data, or even data from deployed sensors. Data engineers design systems that take this data as their input, transform it, and then store it in the right format for it to be used by the data scientist, data analyst machine learning engineers, among other data personnel. These systems are sometimes referred to as extract, transform, and load (ETL) pipelines.&lt;br&gt;
As the data is flowing through to the system, it needs to conform to certain standards of architecture. To make the data more accessible to the user, data normalization is done. some of the &lt;br&gt;
activities for data normalization include removal of duplicated data, fixing missing and conflicting data, and converting the data to the right format. Unstructured data is stored in data lakes, while data warehouses are used to store relational database information.&lt;br&gt;
 data lakes and warehouses&lt;br&gt;
Data lake stores data from both internal and external sources. Data lakes and data warehouses are different. Let's have some of their differences&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JXnzS6NT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cma9n7rfar9ipt3tdarl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JXnzS6NT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cma9n7rfar9ipt3tdarl.png" alt="Image description" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Data catalog for data lakes keeps on records for &lt;br&gt;
• The sources of the data&lt;br&gt;
• The location where the data should be stored&lt;br&gt;
• The owner of the data&lt;br&gt;
• How often is the data updated&lt;br&gt;
Python libraries for data engineering.&lt;br&gt;
Python is mainly used in data engineering because of its wealthy libraries and modules. Some of the data engineering python libraries include:&lt;br&gt;
&lt;strong&gt;Pandas.&lt;/strong&gt; Pandas library is used by data engineers for the purpose of reading, querying, writing, or manipulating data. Pandas can read both JSON and CSV file formats. Pandas can also be used to fix issues such as missing data from data sets. Data engineers use pandas to convert the data into a readable format.&lt;br&gt;
&lt;strong&gt;Psycopg2/pyodbc/sqlalchemy:&lt;/strong&gt; data engineers use mypostgresql to store data. These libraries are used to connect to a database.mypostgresql handles structured data&lt;br&gt;
Elasticsearch. Data engineers use this library to manage a NoSQL database.&lt;br&gt;
&lt;strong&gt;Scipy.&lt;/strong&gt; This library offers quick maths solutions. Data engineers use it to perform scientific calculations on the problems related to the data.&lt;br&gt;
&lt;strong&gt;Beautiful soup:&lt;/strong&gt; This library is used for the purpose of data mining and web scrabbing. Data engineers use beautiful soups to extract data from specific websites. Beautiful soup supports both HTML and JSON data formats.&lt;br&gt;
&lt;strong&gt;Petl:&lt;/strong&gt;  This library is used to extract and modify tabular data. Data engineers use this library when they are building Extract, Transform and Load data (ETL)pipelines&lt;br&gt;
&lt;strong&gt;Pygrametl:&lt;/strong&gt; this is a library that is used during the deployment of the ETL data pipeline.&lt;br&gt;
From what we have covered, it is clear that python is among the best languages to use in data engineering. This is because of its simplicity and wealth of data engineering libraries. Python is also an open source resource; therefore, everyone is free to improve and use the already existing resources for their personal use.&lt;/p&gt;

</description>
      <category>python</category>
      <category>dataengineering</category>
      <category>aws</category>
      <category>iot</category>
    </item>
    <item>
      <title>Introduction to data engineering</title>
      <dc:creator>muriuki muriungi erick</dc:creator>
      <pubDate>Fri, 19 Aug 2022 10:33:51 +0000</pubDate>
      <link>https://dev.to/ndurumo254/introduction-to-data-engineering-33c9</link>
      <guid>https://dev.to/ndurumo254/introduction-to-data-engineering-33c9</guid>
      <description>&lt;p&gt;&lt;strong&gt;Abstract&lt;/strong&gt;The emergence of big data technology has altered the manner in which we do our daily business. Spontaneous growth of big data technology has necessitated the creation of data engineers who collects these data and manage them. &lt;/p&gt;

&lt;h1&gt;
  
  
  INTRODUCTION
&lt;/h1&gt;

&lt;p&gt;Data engineering focuses on making the data more useful and readily available for data consumers. Data engineers build systems to be used in data collection, storage, and analysis of data. In the current cognitive era of computing, data engineering is a primary need for every industry. Most modern organizations collect huge amounts of data daily, which is facilitated by the growth of smart sensors and internet of things (IoT) technology. Most of the smart devices used in industries have smart sensors and transducers. Data from the devices are taken and transferred through IoT and stored in different locations. It is the work of the data engineer to fine-tune the collected data and convert it into the appropriate formats. Data engineering is done before the data is forwarded to the data scientists. It's worth noting that emerging data technologies such as deep learning can not thrive without competent data engineers.&lt;/p&gt;

&lt;h1&gt;
  
  
  WORK OF THE DATA ENGINEER
&lt;/h1&gt;

&lt;p&gt;Data engineers, as we have seen, ensure that the raw collected data is pre-processed and converted into a suitable format to be utilized by the data scientists for the purpose of data analysis. They create data pipelines used by the data-centric and data scientists in their applications. The main goal of data engineers is to make the data available and accessible to the analysis team. Data engineers require a sound knowledge of technical skills in areas such as SQL database and a master of high-level programming languages such as python. They work tirelessly to ensure that this data can be evaluated and optimized to solve different problems of different organizations. Data engineers design and build algorithms used in accessing raw data. Before coming up with such algorithms, they first have to understand the objective of their clients. This is done mainly to make the algorithm perform better per the business goal. Data engineers need to understand data optimization and have the skills to help them develop dashboards and reports. Data engineers may sometimes be tasked with communicating data trends in an organization. The huge organization may have several data scientists and analysts. For data engineers to understand the right tools to be used in data engineering, they should understand different architectural principles that are used in the data processing. The main function of data infrastructure is;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Data extraction: in most cases, the information is located in some locations in either structured or unstructured nature. The information can be in the database or in the internal CRM systems. This information can also be real-time data streams coming directly from sensors.&lt;/li&gt;
&lt;li&gt; Data storage: after the data is extracted, it should be stored securely in certain locations. Data engineering mainly incorporates data warehouses for the purpose of analytics.&lt;/li&gt;
&lt;li&gt; Data transformation: the raw data is of no use to the user. It makes little or no sense to the business problem being solved. It is difficult and time-consuming to analyze such data. Transformation is done to clean data and format it into appropriate formats to be used by the analytics team
Data engineers' roles can be subdivided into three main subcategories. 
i.  Generalists: these are roles for data engineers who work for small companies. They are given the responsibility of the entire data process. they take all data tasks from data management to data analysis.
ii. Pipeline centric: This is mainly found in middle-sized companies.in such a setup, data engineers work with data scientists as they gain insight from the collected data. Such engineers need to have sound knowledge of distributed systems and computer science.
iii.    Database centric: this is for large organizations. In large organizations, the management of data flow is vital. Data engineers in such companies will work with different warehouses from different databases, and they are responsible for developing table schemas&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  SKILLS NEEDED IN DATA ENGINEERING
&lt;/h1&gt;

&lt;p&gt;To land in a data engineering job, one needs to have big data skills. These skills range from designing, creating, building, or maintaining data pipelines. Knowledge of big data frameworks,databases,and containers is also vital. Knowledge of tools such as Hadoop, scala, storm, and python name a few, is also needed. Below are some skills one needs to have to build a successful career as a data engineer.&lt;br&gt;
i.  Database tool: data engineers deal with storing, organizing, and maintaining big data. For one to become a competent data engineer, he needs to understand database design as well as the database structure. The commonly used database structure are the structured query language (SQL) based and NoSQL based.SQL based includes databases such as MySQL, which are used to store structured data.NoSQL includes technologies such as MongoDB and Cassandra, which are used to store unstructured, structured, or semi-structured data.&lt;br&gt;
ii. Tools for data transformation: raw data can not be used directly. They are first cleaned and transformed into desirable formats. The commonly used data transformation tools are the Talend, Pentaho data integration Hevo data, and more&lt;br&gt;
iii.    Tools for data mining: these tools extract useful information and then find the patterns in the big data. Mainly data mining assists in data classification and predictions. Some of the data mining tools include Apache mahout, KNIME, Weka, and more&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>dataengineering</category>
      <category>python</category>
      <category>sql</category>
    </item>
  </channel>
</rss>
