{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# <div style=\"font-family: cursive; background-color: #03045eff; color: #FFFFFF; padding: 12px; line-height: 1.5;\">1. Introduction</div>","metadata":{"execution":{"iopub.status.busy":"2022-06-06T15:26:30.690787Z","iopub.execute_input":"2022-06-06T15:26:30.691211Z","iopub.status.idle":"2022-06-06T15:26:30.718261Z","shell.execute_reply.started":"2022-06-06T15:26:30.691129Z","shell.execute_reply":"2022-06-06T15:26:30.717172Z"}}},{"cell_type":"markdown","source":"<div style=\"font-family: cursive; line-height: 2; font-size:18px\">\n    📌 There is a fantastic notebook that provides an in-depth tutorial on reading large datasets. <a href=\"https://www.kaggle.com/code/rohanrao/tutorial-on-reading-large-datasets/notebook\"> Link to notebook </a> <br>\n    📌 In this notebook, I will be exploring a few ways to read in large datasets.\n</div>\n","metadata":{}},{"cell_type":"markdown","source":"# <div style=\"font-family: cursive; background-color: #03045eff; color: #FFFFFF; padding: 12px; line-height: 1.5;\">2. Importing Libraries 📚</div>\n<div style=\"font-family: cursive; line-height: 2; font-size:18px\">\n    📌 <b>Importing libraries</b> that will be used in this notebook.\n</div>","metadata":{}},{"cell_type":"code","source":"# base\nimport pandas as pd\nimport numpy as np\n\n# Create List of Color Palletes \ncolor_mix = ['#03045e', '#023e8a', '#0077b6', '#0096c7','#00b4d8', '#48cae4', '#90e0ef','#A5E6F3', '#caf0f8']\n\n# time\nimport time\n\n# warning\nimport warnings\nwarnings.filterwarnings(\"ignore\")","metadata":{"execution":{"iopub.status.busy":"2022-06-06T17:56:57.620961Z","iopub.execute_input":"2022-06-06T17:56:57.621713Z","iopub.status.idle":"2022-06-06T17:56:57.633177Z","shell.execute_reply.started":"2022-06-06T17:56:57.621608Z","shell.execute_reply":"2022-06-06T17:56:57.632253Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        file_size = round(os.path.getsize(os.path.join(dirname, filename)) / (1e9), 2)\n        print('*' * 70)\n        print(f\"Filename : {filename} \\t File Size : {file_size} GB\")\n        print('*' * 70)","metadata":{"execution":{"iopub.status.busy":"2022-06-06T18:00:52.606695Z","iopub.execute_input":"2022-06-06T18:00:52.607185Z","iopub.status.idle":"2022-06-06T18:00:52.639527Z","shell.execute_reply.started":"2022-06-06T18:00:52.607089Z","shell.execute_reply":"2022-06-06T18:00:52.638395Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<div style=\"font-family: cursive; line-height: 2; font-size:18px\">\n    📌 Note the file sizes! These files are <b>huge</b>.\n</div>","metadata":{}},{"cell_type":"markdown","source":"# <div style=\"font-family: cursive; background-color: #03045eff; color: #FFFFFF; padding: 12px; line-height: 1.5;\">3. Methods </div>","metadata":{}},{"cell_type":"markdown","source":"## <div style=\"font-family: cursive; background-color: #023e8a; color: #FFFFFF; padding: 12px; line-height: 1.5;\">3.1 Using Pandas </div>","metadata":{}},{"cell_type":"markdown","source":"<div>\n    <img src=\"attachment:d2d5e930-2992-4eab-aaca-64f3383e9fae.png\" width=\"200\"/>\n</div>\n\n<div style=\"font-family: cursive; line-height: 2; font-size:18px\">\n    💡 <a href=\"https://pandas.pydata.org/\"> Pandas </a> pandas is a fast, powerful, flexible and easy to use open source data analysis and manipulation tool, built on top of the Python. <br>\n</div>\n","metadata":{},"attachments":{"d2d5e930-2992-4eab-aaca-64f3383e9fae.png":{"image/png":"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PQoheS4ICAKCgCAgCCwABMShLwAhCYmCgCAgCAgCgkAUAuLQoxCS54KAICAICAKCwAJAQBz6AhCSkCgICAKCgCAgCEQhIA49CiF5LggIAoKAICAILAAExKEvACEJiYKAICAICAKCQBQC4tCjEJLngoAgIAgIAoLAAkBAHPoCEJKQKAgIAoKAICAIRCEgDj0KIXkuCAgCgoAgIAgsAATk5SxNhaSrxr3Jk+/njtPoqSpjMohba5qd3BQEBAFBQBAQBPqMgDj0BoB9VcTrP9OLtErCpVfTfEl3+6ARr5bUGlCaarZ9XHkqCAgCgoAgIAj0BwFx6FO48r3cBXTHs+icmzGjKytx3YOb7Xvomu//VkXfFA+BR986lZ18EQQEAUFAEBAE5hEBcehTYOd9fr1PFYrLvXPOTJpaRmtj701FafLFKF+jN+/7xk+ahNlVFwVtAQmCgCAgCAgCgsD8ICAOfTbOZlvxss2zb8sdQUAQEAQEAUFg30VAHHpT2eQSSm2Jnj6flXYlh+1lYdwsXOSGICAICAKCQL8REIfeFGFxyk1hkZuCgCAgCAgC+ywC7Rd8zTPZMuk8z4BLcYKAICAICAL7DQJ97qFbF80/MXx1EAUr0fYbdIURQUAQEAQEAUFgnhDop0PHhi5MQxu77SvGfLRGbOzpNr5nN4LNEwBSjCAgCAgCgoAgsD8g0E+H7lkHrRQWmMXw58qE8XCV81n2h8olPAgCgoAgIAjMHwJxPG1X1Ayl1z5eeYk16HNX0E2PUY42GGtPoBVQXjy5+KbN6qIiCmY6GYLvSgKSSBAQBAQBQUAQmDsCMRx4ZCG9yCOyEIkgCAgCgoAgIAjsDwj00WmOJA9XKplUAx31sDdZVK8t49JRuv1BGMKDICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoKAICAICAKCgCCwQBD4/1QDfwCPfzglAAAAAElFTkSuQmCC"}}},{"cell_type":"code","source":"## This block of code have been commented as it resulted in a out of memory issue - see image below.\n\n# start = time.time()\n# df_pandas = pd.read_csv(dirname + \"/train_data.csv\")\n# end = time.time()\n\n# pandas_duration = end - start\n# print(\"Time to apply with pandas: {} seconds\".format(round(pandas_duration, 3)))","metadata":{"execution":{"iopub.status.busy":"2022-06-06T17:56:57.902752Z","iopub.execute_input":"2022-06-06T17:56:57.903178Z","iopub.status.idle":"2022-06-06T17:56:57.907182Z","shell.execute_reply.started":"2022-06-06T17:56:57.903147Z","shell.execute_reply":"2022-06-06T17:56:57.906232Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"<div style=\"font-family: cursive; line-height: 2; font-size:18px\">\n    📌 Using <b> Pandas </b> to read the traning file resulted in a Out of memory (OOM).\n</div>\n\n![oom.PNG](attachment:a729cd30-e395-48c1-9ee3-a18dd9ed1a52.PNG)\n","metadata":{},"attachments":{"a729cd30-e395-48c1-9ee3-a18dd9ed1a52.PNG":{"image/png":"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"}}},{"cell_type":"markdown","source":"## <div style=\"font-family: cursive; background-color: #023e8a; color: #FFFFFF; padding: 12px; line-height: 1.5;\">3.2 Using Datatable </div>","metadata":{}},{"cell_type":"markdown","source":"<div>\n    <img src=\"attachment:e891f523-019d-4aab-890c-7d197cf00bb5.png\" width=\"200\"/>\n</div>\n\n<div style=\"font-family: cursive; line-height: 2; font-size:18px\">\n    💡 <a href=\"https://github.com/h2oai/datatable\"> Datatable </a> is a python library for manipulating tabular data. <br>\n    💡 It supports out-of-memory datasets, multi-threaded data processing, and flexible API. <br>\n    💡 It is specifically meant for data processing of tabular datasets with emphasis on speed and support for large sized data. <br>\n    📌 Documentation: <a href=\"https://datatable.readthedocs.io/en/latest/index.html\"> Getting started with Datatable</a>\n</div>\n","metadata":{},"attachments":{"e891f523-019d-4aab-890c-7d197cf00bb5.png":{"image/png":"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"}}},{"cell_type":"code","source":"import datatable as dt","metadata":{"execution":{"iopub.status.busy":"2022-06-06T17:56:58.027082Z","iopub.execute_input":"2022-06-06T17:56:58.027454Z","iopub.status.idle":"2022-06-06T17:56:58.099486Z","shell.execute_reply.started":"2022-06-06T17:56:58.027427Z","shell.execute_reply":"2022-06-06T17:56:58.098780Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"start = time.time()\ndf_datatable = dt.fread(dirname + \"/train_data.csv\")\nend = time.time()\n\ndatatable_duration = end - start\nprint(\"Time to apply with datatable: {} seconds\".format(round(datatable_duration, 2)))","metadata":{"execution":{"iopub.status.busy":"2022-06-06T17:56:58.227159Z","iopub.execute_input":"2022-06-06T17:56:58.227445Z","iopub.status.idle":"2022-06-06T17:59:14.755428Z","shell.execute_reply.started":"2022-06-06T17:56:58.227419Z","shell.execute_reply":"2022-06-06T17:59:14.753768Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_datatable.head()","metadata":{"execution":{"iopub.status.busy":"2022-06-06T17:59:14.758240Z","iopub.execute_input":"2022-06-06T17:59:14.758568Z","iopub.status.idle":"2022-06-06T17:59:14.767614Z","shell.execute_reply.started":"2022-06-06T17:59:14.758540Z","shell.execute_reply":"2022-06-06T17:59:14.766682Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## <div style=\"font-family: cursive; background-color: #023e8a; color: #FFFFFF; padding: 12px; line-height: 1.5;\">3.3 Using Dask </div>","metadata":{}},{"cell_type":"markdown","source":"<div>\n    <img src=\"attachment:94b2fbf6-6df0-4add-a8ee-9b8f92156c04.png\" width=\"400\"/>\n</div>\n\n<div style=\"font-family: cursive; line-height: 2; font-size:18px\">\n    💡 <a href=\"https://docs.dask.org/en/stable/\"> Dask </a> is a flexible library for parallel computing in Python. <br>\n    💡 Dask is an open-source Python library that lets you work on large datasets. <br>\n    💡 Dask Dataframes can read and store data in many of the same formats as Pandas dataframes. <br>\n    📌 Documentation: <a href=\"https://docs.dask.org/en/latest/\"> Getting started with Dask</a>\n</div>","metadata":{},"attachments":{"94b2fbf6-6df0-4add-a8ee-9b8f92156c04.png":{"image/png":"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"}}},{"cell_type":"code","source":"import dask.dataframe as dd","metadata":{"execution":{"iopub.status.busy":"2022-06-06T17:59:14.769467Z","iopub.execute_input":"2022-06-06T17:59:14.770303Z","iopub.status.idle":"2022-06-06T17:59:18.007139Z","shell.execute_reply.started":"2022-06-06T17:59:14.770263Z","shell.execute_reply":"2022-06-06T17:59:18.006185Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"start = time.time()\ndf_dask = dd.read_csv(dirname + \"/train_data.csv\")\nend = time.time()\n\ndask_duration = end - start\nprint(\"Time to apply with dask: {} seconds\".format(round(dask_duration, 2)))","metadata":{"execution":{"iopub.status.busy":"2022-06-06T17:59:18.009469Z","iopub.execute_input":"2022-06-06T17:59:18.009871Z","iopub.status.idle":"2022-06-06T17:59:18.097959Z","shell.execute_reply.started":"2022-06-06T17:59:18.009830Z","shell.execute_reply":"2022-06-06T17:59:18.097048Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df_dask.head()","metadata":{"execution":{"iopub.status.busy":"2022-06-06T17:59:18.099421Z","iopub.execute_input":"2022-06-06T17:59:18.099785Z","iopub.status.idle":"2022-06-06T17:59:19.671733Z","shell.execute_reply.started":"2022-06-06T17:59:18.099746Z","shell.execute_reply":"2022-06-06T17:59:19.669705Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## <div style=\"font-family: cursive; background-color: #023e8a; color: #FFFFFF; padding: 12px; line-height: 1.5;\">3.4 Using Spark </div>","metadata":{}},{"cell_type":"markdown","source":"<div>\n    <img src=\"attachment:ac591a64-5e40-4321-b6b8-6d85cbca0d4b.png\" width=\"400\"/>\n</div>\n\n<div style=\"font-family: cursive; line-height: 2; font-size:18px\">\n    💡 <a href=\"https://spark.apache.org/\"> Spark </a> is an open-source, distributed processing system used for big data workloads. <br>\n    💡  It utilises in-memory caching, and optimized query execution for fast analytic queries against data of any size. <br>\n    📌 Documentation: <a href=\"https://spark.apache.org/docs/latest/\"> Getting started with Spark</a>\n</div>\n","metadata":{},"attachments":{"ac591a64-5e40-4321-b6b8-6d85cbca0d4b.png":{"image/png":"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"}}},{"cell_type":"code","source":"!pip install pyspark","metadata":{"execution":{"iopub.status.busy":"2022-06-06T18:01:01.011017Z","iopub.execute_input":"2022-06-06T18:01:01.011886Z","iopub.status.idle":"2022-06-06T18:01:11.520058Z","shell.execute_reply.started":"2022-06-06T18:01:01.011846Z","shell.execute_reply":"2022-06-06T18:01:11.519046Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pyspark\nfrom pyspark.sql import SparkSession\nspark = SparkSession.builder.appName('readLargeFile').getOrCreate()\nprint('Spark info :',spark.version)","metadata":{"execution":{"iopub.status.busy":"2022-06-06T18:06:08.320386Z","iopub.execute_input":"2022-06-06T18:06:08.321304Z","iopub.status.idle":"2022-06-06T18:06:08.328383Z","shell.execute_reply.started":"2022-06-06T18:06:08.321263Z","shell.execute_reply":"2022-06-06T18:06:08.327322Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import time\nstart = time.time()\ndf_spark = (spark.read.format(\"csv\").\n            option(\"header\",\"true\").\n            load((dirname + \"/train_data.csv\")))\nend = time.time()\nspark_duration = end - start\n\nprint(\"Time to apply with pyspark: {} seconds\".format(round(spark_duration, 2)))\n\n","metadata":{"execution":{"iopub.status.busy":"2022-06-06T18:03:13.120415Z","iopub.execute_input":"2022-06-06T18:03:13.120834Z","iopub.status.idle":"2022-06-06T18:03:13.638833Z","shell.execute_reply.started":"2022-06-06T18:03:13.120801Z","shell.execute_reply":"2022-06-06T18:03:13.638011Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# <div style=\"font-family: cursive; background-color: #03045eff; color: #FFFFFF; padding: 12px; line-height: 1.5;\">4. Summary </div>","metadata":{}},{"cell_type":"markdown","source":"<div style=\"font-family: cursive; line-height: 2; font-size:18px\">\n    📌 Using <b> Dask </b> is far quicker, so will be using this method going forwards.\n</div>","metadata":{}}]}