Last active
March 30, 2020 04:55
-
-
Save ryan-williams/0aeb2111cb8b7fd588784e2a7c35433e to your computer and use it in GitHub Desktop.
A couple example notebooks associated with https://github.com/dask/dask/pull/6038 (`to_sql` support for Dask DataFrames)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# `dask.dataframe.to_sql` example\n", | |
"See below for examples of writing a Dask DataFrame to a SQL table:\n", | |
"- [Setup](#Setup)\n", | |
"- [Writing blocks in serial](#serial-to-sql)\n", | |
"- [Writing blocks in parallel](#parallel)\n", | |
" - theoretically faster / more scalable\n", | |
" - **BUT: [rows out of order!](parallel-db-table)**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Use local Dask, ensure `psycopg2` is installed:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from sys import path, executable as python\n", | |
"path = ['.'] + path \n", | |
"!{python} -m pip install -q psycopg2" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Setup\n", | |
"Make a simple 10-row DataFrame in Pandas and Dask (with 5 partitions in the latter):" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from dask import delayed\n", | |
"from dask.dataframe import DataFrame as DDF, from_pandas\n", | |
"from pandas import DataFrame as DF\n", | |
"\n", | |
"df = DF([ {'i':i, 's':str(i)*2 } for i in range(10) ])\n", | |
"ddf = from_pandas(df, npartitions=5)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Declare DB configs, and helper for verifying DB-table contents:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from pandas import read_sql_table\n", | |
"table = 'test'\n", | |
"db = 'sqlite:///test_db'\n", | |
"def read(index_col='index'): \n", | |
" df = read_sql_table(table, db, index_col=index_col)\n", | |
" print(f'{len(df)} rows, {len(df.index.unique())} distinct')\n", | |
" return df" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Check out the Dask DataFrame:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div><strong>Dask DataFrame Structure:</strong></div>\n", | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>i</th>\n", | |
" <th>s</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>npartitions=5</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>int64</td>\n", | |
" <td>object</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>...</th>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>8</th>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>9</th>\n", | |
" <td>...</td>\n", | |
" <td>...</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>\n", | |
"<div>Dask Name: from_pandas, 5 tasks</div>" | |
], | |
"text/plain": [ | |
"Dask DataFrame Structure:\n", | |
" i s\n", | |
"npartitions=5 \n", | |
"0 int64 object\n", | |
"2 ... ...\n", | |
"... ... ...\n", | |
"8 ... ...\n", | |
"9 ... ...\n", | |
"Dask Name: from_pandas, 5 tasks" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"ddf" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"5 partitions of 2 rows each:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"0 2\n", | |
"1 2\n", | |
"2 2\n", | |
"3 2\n", | |
"4 2\n", | |
"dtype: int64" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"ddf.map_partitions(len).compute()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Empty `_meta`:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>i</th>\n", | |
" <th>s</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
"Empty DataFrame\n", | |
"Columns: [i, s]\n", | |
"Index: []" | |
] | |
}, | |
"execution_count": 6, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"ddf._meta" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The 5 partitions don't depend on one another:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<IPython.core.display.Image object>" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"ddf.visualize()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Write to a SQL DB <a id=\"serial-to-sql\"></a>\n", | |
"Prepare to write to the DB:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"res = ddf.to_sql(table, db, if_exists='replace', compute=False)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Task Graph <a id=\"serial-graph\"></a>\n", | |
"By default, each partition is written in serial:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAALMAAAX5CAYAAAA+7yteAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAs6ADAAQAAAABAAAF+QAAAACG6ed5AABAAElEQVR4AexdB5gVxdJtJKmgIIIggoBiwIAgoIIImMCA+hQDRhTTM+eIKCrm+PQZyMEsImJCxIAgKiIGoqIEUVEBARFJIv3XqffP9e6yu+zdO9XTM1P1fbv33gkdTp/p6a6uripnSYyKIpAABDZJQB20CooAI6BkViIkBoEKialJjhXp3r27GTRokClfvnyOd/p9+d9//23mz59v6tev73dBBUqXWjJ/9913ZuzYsWb//fcXgDW6JA888EAzd+5cJXN0TRBNzuXKlTMVKiTreUad0io6Zk5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3krmBDZqWqukZE5ryyew3slyG59DAyHmR/v27Z3ENEGckU022cS48GqPvBo0aJADEsm5tFxa4wAi/CEaXlq+//5707hxY3PqqaeawYMHS2fHDw0enDRKasnsqrHvuOMOc/vtt/MbYNmyZaZixYqusk5dPul8hB02c//+/c2aNWuYzKNHj3aYc/qyUjILtvmMGTPMr7/+yjn88ccfpl+/foK5adJKZkEODBkyxKxbty6TA3rmlStXZn7rl3ARUDKHi2eB1BAB9q+//socq1Spkhk5cmTmt34JFwElc7h4ZlL75JNPzKpVqzK/8QVDjT59+hQ4pj/CQ0DJHB6WBVKCGq4wmXHBxx9/bJYuXVrgWv0RDgJK5nBwLJAK9NfPPvtskXpsqOaGDRtW4Hr9EQ4CSuZwcCyQyuzZs3lIgTEy/hCfGyTGd0wA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6lCWAieezPPnz7cnn3wyv4YffvjhWA4lytKwuIccntsjjzzSbr/99pbCuJU1mdjcl1gyr1y50t5yyy08Jr711lstfqdVKDi8JZ213W+//eynn36aWBgSSeZ3333X0kKGPeWUUyx6ZhVraXe4HTRokK1bt6699NJLLYVxSxwsiSLz77//brt168bj4jfffDNxjRVGhWiZ3Z555pmM0dtvvx1Gkt6kkRgyf/jhhzw2RK+T5MldWMyhSLGMFwUPSozWI/Zkhk61V69ePMGjgJFhtXUq0iG7ENZ6kB2I/eabb2Jf51iTmSzULNkqWFp2tr/88kvsGyOqCgwePNiScRTrqaMqQxj5xtaeefr06Wxw06RJEzNmzBhDK2DOVk2TlhHNM9jmg1ZETc+ePdHBxbKKsbTNIG2FId2xeeyxx8wJJ5wQS+B9LDQsBWGbQgtLZuDAgQamq3GS2PXMQ4YMMaRyY+MgJXK4VIMd9nvvvcchkUlHb7DBIE4SKzKjJwbI48eP5/jTcQI6LmWFpeALL7zAxe3QoQNvIIhL2WMTbvipp54yF198cWYnRlwAjmM5Yfh/zz338DADGxJgGostX75LLMj84IMPmttuu423FmG/nIobBMgMwPz555+mSpUqZsmSJQYxwH0W7yeAffv2NXfddZf54IMPDBnM+IxlYsuGucm3335rxo4da6pXr+5tPb0mM7YwXX311byRFDNslegQoA0AvD0LqjtftRzekhl73o466ihDy65mr732iq4VNWdGALpnqEMhzz33nJcbar3UZsAXxXHHHWeeeeYZJTLTJ/p/mBQOHTqUfYP06NEj+gIVVYIwlhHDTANbfZo2bWofffTRMJPVtEJCACYENAm3tIM9pBTDS8a7YcYZZ5zBy6lQxan4iQDtYGEfHtD377rrrt4U0qthRr9+/dhfBbb9q/iLADwt0T5K06VLF/bO5EtJvemZv/vuO7Pvvvsasks2MB5S8R8BTAixBE5DQi8K6wWZ161bZ2h/munevbu58MILvQBGC7FxBGhnD/vE69OnD3t+2vgdsld4MczACl+tWrWUyLJtHXrq1apVY43T+eefb2h3T+jp55pg5D1zMLzApEKXqnNtPj+uB5kRG/yJJ56ItECRkxk+3TCRgBGRSjwRoJ3erNXAii15VIqsEpEOM+CwEM65dZwcWfuHkjGcp997772GNhNHukslMjLD6fZVV11lHnnkEX5FhYKqJhIZAtgwAefqWCWMSiIbZuBJJieG7A85qsprvuEiALvnzp07s4VdFPbPkZAZYyyEOoBZp+qUwyVU1KmRw0bTunVrfuu6LkskZO7du7chPw1Gl6xdN7d8fjNmzDDYbgVjMRj1uxTnZMbOBfIfbCZNmsSfLiureblBAJ78YbZ7zTXXuMnw/3NxTmZM+GCgQh7enVZUM3OHwJdffmnIlS5Hz8Kk0JU41WaQKy02UMHuEZXkItCsWTPWOyPuiktxSuZXX32V9/HBoEgl2Qhce+21hkJROK2kUzL379/fnH322U4rqJlFg8Chhx5qfv31V0PhN5wVwNmYGSG+aAeJQYjezTbbzFkFNaPoEIB7CBAazntciDMy33HHHVwxTABV0oEAYonvvvvuhjy0mkqVKolX2tkwAy6fKGSZeIU0A38QoGhXHJqZPPQ7KZQTMmOBBB4m4epJJV0InHTSSRnfddI1d0Jm6JSxxUaDl0s3p3/p421MEQ0MAtxLixMyjxo1yhx22GHSddH0PUQAO4h22mkn9kolXTxxMlPcDN5x3a5dO+m6aPqeIkChOtgzv3TxxMmMEA0Uc8RUrlxZui6avqcIYGnbxSRQnMxwHdC2bVtPYdZiuUAAfjbgRXT58uWi2YmTecKECarFEG1C/xOHsVGrVq0MBagXLawomWHuiSeyZcuWopXQxP1H4IADDjAfffSRaEFFyYx1efgiQ5wMlXQj0KJFC94mJ4mCKJmnTp3KHm8kK6BpxwMBigLLWi3J0oqSecqUKWxcJFkBTTseCDRq1IjjosCll5SIkhnL2HvssYdU2TXdGCGA1V/0zl9//bVYqUXJPGfOHHW5JdZ08UsYAZbACSkRIzO2SMGGWf3HSTVd/NLFRuZ58+aJFVyMzDDCr1OnjmoyxJoufgnDV0osyQyTTziijqvAsLw4N62zZ8+OXVzp0rQD/GRPnDixNJeW6Zqtt96afQuW6eZS3CTWM8MhIgofN8HwCHFVtttuOzNz5swiiw8LwJtuuqnIc3E9iFB1zZs3ZzsaqTrEmszbbLONFC5i6ZYvX94gzC7FQCo2j2effdbccMMNxZ7P98S4cePYSU6+6eRyPyIXwIunpIAP6OSkRKxnhj85FxtX169fHzo2hVcsCxMbdgZ169YtkG9wTb7lwfAGHoHCMsopzig+u5zBd+l9enCmWNzQrQCYZfwhRua1a9eKbmJ899132UEfgl8efPDBZtasWQzBW2+9xa/KI444wuyzzz4c7xknRo4cyeG+0Ot26tSJh0D4jo0D8OMBI3IE0cwW+I+GbhTxou+55x4+9f777xvEkj733HP5N3Ye4/Xcq1cvLs8WW2xRIGDN008/zelj0QC7lQPiZOeT/R1ufn/44QcexiCiE6S4OmXfV/g7Hi54tL/kkkvMLrvsYhB3BLJo0SID54YoPzabHnLIIcaVsxY8LOCFmFClRYTilNjLL79cJG0yXrI0/rLUMJw+NZYlz/t22rRplp5+SxM0Pk4EsxTnmX9Pnz6dz5HRkyWnfpaGCRhH8H3z58+3xx57rCX7Ab6PyMTnyA7Xfvrpp5bG0JaU/pY0NPxHJo2Wek++FnlRCARLmw8s6VAt+QWx9Drlc2RYY9u3b2+pl7XkW4/TpIeQzxX3j3pmvo48pPIlJdWpuDRwnOzILT2kfAnZyNi77rqLv9M+TEsPCX8P8qKHmH8PHjyYMeIfAv8WLlxoSSkgkPL/ksTYUETuu+8+S15tRNK+7LLL7DHHHJNJG4RCw9CYz5JrqMxxkAuEvfnmm/kY6TntAw88wN9pJYrPkV80/k1OsjNAB2Qm/9F8bsmSJUxm6t3499FHH50hMw6Qt0v7+OOP8znqzTlder3b008/3dIKqD311FP5j1SVlgKq83XF/QsIFpB5Y3UqLh2KEcPluOKKKywN+ez3339vaZLHx1D3QPAguiIzLWVbessFWYf+KebVDq8UCh0s8kaBlqF27dqZtKG/hBTWYeLVjklH4eO4FpGSsgU7YeDNP1sCp39bbbWVady4sYFDwI1JMN6mljIIPkRENkTgjd22wflg82/hspdUp+xEMPSBxgX+SjBcwk6PYCm5Xr162Zc6+w4+SI7LxcbMkuMjkAvjyOzx59ixY1mdBks92FEHAkIW1XgBWYLrNva5cuVK3pi5seuyz8ODE8b22TJixIjsn8V+D8oHFWFp65SdGIh73XXXmXfeecdA3QjtCzaWQhCxIAqRnkeJkRk9HZTwEoINkpjIILDP5MmTDQ0jDI2J2Z0BGi7Yb4bldHjTge8GCMDEeUhgvRW8PTDrz344cE0wWUEe0M7QsAGH+WEBuSG4B/UM0g2O4xj2voFMF1xwgaGxL08MYXxVkgThE9Aj41q4aCipTsWlhTJj0ov9l/AihRANmOjWqFHD3H777exuFruAsuuMNxPywltFQoAnzWEkkv5fmqEPXP4/QYwdMamSEGoASwSxpBPmyRfN2i2Rh7PC5IZ6M0sNZnfbbTcbjHNJ68DjRUwAMZ6kgDL8G5M8anhLOyH4N2kcLBHSkuM/Hu9iokezfksNz+kPGjTIbrnllpa0H/aVV16xFJuF78NkC2PsIJ2ePXtaIgdjQEhbGtbwZBPHNiakobHUGWTG+sXVqaR0SIti69evb++++26uK/ku4cvvv/9+xozenDzuR9kwZgYmNDThupCTcAuMwxZMgoNJdthpIz0xX3NQ/GPMhk8pwXACPQvUYdmC3pE0Fhw3JR9dN3oq9Mj5rmTiLYKQCOh1CXNDk7zs4hb4DpdWGGIsW7aMVYLBycJ12lg6UDViiAXHhZhfBMMWpIe3Es7h7YkxPlSSiBYlLRgaPvzwwzxElMhLbAIovXQJMIqLmQHSQIear6Cx8ZevgFiBYNEAk8LiBD6s8XBCt50thetU2nRg7FVYgskvHlQIHgwXIm3iIEZmgIheQaUgAjREMVh4yVfyTQeGYD169OBi0NDJwJ+ytPkB+FDUw5UvFsH9YsMMZIDInQsWLDAAXsUvBDA8CyarKBl6fsS/lpSLLrqINzhjVVJCREsP/a/kzgIJQNKSJoiLzib4kyYycJ1HGhoY6EuJOJlRARVFAAjQKiRPyqXQECUzNrOWZtVMqnKarj8IQDMEh0AwepISUTK78JUgBYymGy4CWNQCkQMTgXBT/19qomTGci4qoaIIYEkeUVslRZTMeBKxnAw1kEq6EYCfOdiXS4oomTFDxnYcaYd5kgBp2uEg4MIbrCiZAQN8MyuZwyFEXFPB8jl2zyAMsaSIk7lDhw4ZKzbJimja/iIAy8E2bdqIL8qIk7l169a8cKJL2/6STbpk2GcJs11pEScztu5j3R8WUyrpRCAxZEbzwUgdseBU0ocANgXACjDY5SKJgKihUVBwTADIUJyDwBe2PQ6u0c9kIkCG/ry7BLtbpEV8mIEKwH4WE0Fs41FJFwKImR5sW5OuuRMyoxJdu3Y1cGulkh4EEDYP5r+uHM47GWag+WBogi1BMDyC02mV5COADcAIzEPOgJxU1hmZURty3sJDDripUkk2AtjDCEfz2IuJHeEuxNkwA5U577zzzIABA8RcELgATPMoHQJDhgwxnTt3dkZklMopmbHJFGahTz31VOkQ0atiiQB8hpBLAwMnkC7FKZlRsauvvpor6rKSmpdbBF588UV2Z4aY2S7FOZnhQhVebXQRxWUzu8sLbgvg/heuwVyLczKjgr3IlzG2ubvy1+Aa1DTnB1/P8GeCUBmuJRIyH3XUUexc5aWXXnJdX81PEAH4qUNH5WK1r6hqREJmFIScX5sbb7zRFBemoKjC6jG/EYCmCmYLiGQQhTjVMxeuIDkMN+TJ3ZBT8sKn9HfMEIBeeeedd2YXvtBYRSGRkhnOuGHvPGPGDI4pEgUAmmc4CEANBw9JTzzxRDgJliGVSMmM8sJTKBxj6/i5DK3nyS3wBQ3je0Q0yNdjaj5VimzMHBSa/BgbCiBj4P1SJX4IYIGke/fuBpGxoiQykIuczHAZ279/fwOnemHFvosfJeJbYqz0wYCsJDe9rmoX+TAjqCjGXPBLh2AyKvFAgMLKsf0FLCELB/mMogaR98xBpaGqgy+ygQMHBof002ME4Kgc8VYQLNMHIgMqb3pmFAZaDexIQeQoikeCQyqeIoBhBVb6+vbt600JvemZgQgIjMhIWCGE3lLFTwQo+i5Hwnr00Ue9KqBXPXOADEUl5fGzajgCRPz5pMixvAWOor2y8b0/JfNAm1EUGHjyV69ebSgedlGn9VhECGAYeMIJJxhsUsUuEt/Eq2FGAA58+EKrgV4AxFaJHgF4pDriiCNYn0xB76MvUBElEIs2VUReOR2Cf40333yTHS8iChIFl8zpfr04PATg96RTp0687c0HfXJxNfNyzJxdWKjr2rdvz16R+vXrl31KvztAABNxbKiAizWoT30W78kM8BDhFL0zNkmeccYZPuOZqLLBUTxW9xB/u3BAex8r6uWYuTBQiHAKIxZsxaGY0IVP628BBNAjw3jo5ptvjgWRGQLauhQbmTVrFgc3R2B0FTkEKMSZJZ2/JYtGuUwEUsY+vFgJgCaXBZaifMaq3HEp7Oeff25paGEpYHtcipwpZyzGzIXforCuO+6449hVKsbRGs64MEJl+w11KKwXsUR99NFHly2RCO+KxZi5MD4gL5yXw8AFvhlg3K9SdgSoa+P5CCwX33jjjVgSmWuf6aNj+oUmhJYmiJZ66JjWINpi//TTT5ZUb5ZUb/a3336LtjB55h67MXNR9Z0yZQqPo0888URLQ5CiLtFjRSAwYsQI7gjIkaUlNwFFXBGvQ4kgMyBftWqVJQMlSzYDllYO49UKjkuLHrhbt252xx13tBMnTnScu1x2iSFzABGF6bKNGjWyZDge+9dmUKcwP2njsK1du7Yl98KWDOzDTDrytBJHZiBKW94txdLgVyhUTLTpMnKgoy4Axa62tJJnyYt9onrjbFwTSeaggrRqaMlAxu66666W4qkEh1P1uWDBAkumtPxgP/bYY4l+sBNN5oC1GEPvtddetmXLlnb06NHB4UR/Ylx85ZVX2q222oo/lyxZkuj6onKpIDMqun79ejts2DB+zZJu2lKwoETM4FG3bCEvUfaCCy6wFHqBV0l//vnn7NOJ/p4aMgetCFK/9tprlsxKWfNx55132rg3ONRqePt06dLFkiMWtqmIe52C9srlM3VkzgaH3ErZc88911KcQiYCLeeyii/7Gp+/08qnvfXWW229evVsq1atLC1D2z///NPnIouWLZa2GWVfuC36TiKAgZPs5557znz22We8nAvbBBikIyCnL0JM4NBzWMpHWRcvXswBI8866yzTtGlTX4oZWTmUzIWgX7hwoXn55ZfZ9924ceNM8+bNectQmzZtzL777su+IgrdIvqTzF7NhAkTDAJEInRG9erV2c74+OOPZ3fA5cqVE80/TokrmUtoLQTihEOa999/n8mEoOZNmjQxiJqFnpA0JIYWaHinMjbh5iOkfTBk3mqmT59uaHme/+D2arPNNmPStm3blkncsGHDfLJJ9L1K5hyad+3ateyxNCAbiDd79mzz448/mu222463GMETJv5q1qxpQPBKlSplckCYBDwgcKOANwAITCozAz/VFStWNDvssAM77MaDgj+8FXxxfZWphMdflMwhNA5ICkLTAgUTFCRdunQpExfjccT4gNsxjMHh9RRurbJJj95WbbLzbwglc/4YlpgCnKiTUY+pU6cO9+IlXqwn80Iglsb5edXY8c3wkonwCKT31U0EwtgrmQUBhvMUaEQgGIoMHTpUMDdNWsksyAGo+IIJICaP6ntaEGxKWsksiC+GGHDKHQi+T5o0KfipnyEjoGQOGdAgOTgahF46W6CSGzRoUPYh/R4iAkrmEMHMTgrLzeXLl88+xOPmZ555xpCxU4Hj+iMcBJTM4eC4QSrwPUH7Ejc4DvsKrCqqhI+A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\n", | |
"text/plain": [ | |
"<IPython.core.display.Image object>" | |
] | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"res.visualize()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"`None`s are returned for each block:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Make meta (0)\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"[None, None, None, None, None, None]" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"res.compute()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Verify the DB contents <a id=\"serial-db\"></a>" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"10 rows, 10 distinct\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>i</th>\n", | |
" <th>s</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>index</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>0</td>\n", | |
" <td>00</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>1</td>\n", | |
" <td>11</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2</td>\n", | |
" <td>22</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>3</td>\n", | |
" <td>33</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>4</td>\n", | |
" <td>44</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>5</td>\n", | |
" <td>55</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>6</td>\n", | |
" <td>66</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>7</th>\n", | |
" <td>7</td>\n", | |
" <td>77</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>8</th>\n", | |
" <td>8</td>\n", | |
" <td>88</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>9</th>\n", | |
" <td>9</td>\n", | |
" <td>99</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" i s\n", | |
"index \n", | |
"0 0 00\n", | |
"1 1 11\n", | |
"2 2 22\n", | |
"3 3 33\n", | |
"4 4 44\n", | |
"5 5 55\n", | |
"6 6 66\n", | |
"7 7 77\n", | |
"8 8 88\n", | |
"9 9 99" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"read()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Writing blocks concurrently <a id=\"parallel\"></a>\n", | |
"Passing `parallel=True` causes blocks to be written in parallel:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"res = ddf.to_sql('test', 'sqlite:///test_db', if_exists='replace', parallel=True, compute=False)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"This can be faster / more scalable, but generally causes the rows to end up out of order!\n", | |
"\n", | |
"Depending on your use-case (and use of indexes at write- and read-time), that may not matter, but it's important to be aware of." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Task Graph\n", | |
"\"Meta\" is written first, then all blocks are written concurrently (I'm not sure why they're all in the one `combine_list` node as opposed to the graph fanning out there):" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<IPython.core.display.Image object>" | |
] | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"res.visualize()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Compute" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Make meta (0)\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"[None, [None, None, None, None, None]]" | |
] | |
}, | |
"execution_count": 14, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"res.compute()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"### Check the DB table <a id=\"parallel-db-table\"></a>\n", | |
"Note that the rows are out of order!" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"scrolled": true | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"10 rows, 10 distinct\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>i</th>\n", | |
" <th>s</th>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>index</th>\n", | |
" <th></th>\n", | |
" <th></th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>6</th>\n", | |
" <td>6</td>\n", | |
" <td>66</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>7</th>\n", | |
" <td>7</td>\n", | |
" <td>77</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>2</th>\n", | |
" <td>2</td>\n", | |
" <td>22</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>3</th>\n", | |
" <td>3</td>\n", | |
" <td>33</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>0</td>\n", | |
" <td>00</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>1</th>\n", | |
" <td>1</td>\n", | |
" <td>11</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>4</th>\n", | |
" <td>4</td>\n", | |
" <td>44</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>5</th>\n", | |
" <td>5</td>\n", | |
" <td>55</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>8</th>\n", | |
" <td>8</td>\n", | |
" <td>88</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <th>9</th>\n", | |
" <td>9</td>\n", | |
" <td>99</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" i s\n", | |
"index \n", | |
"6 6 66\n", | |
"7 7 77\n", | |
"2 2 22\n", | |
"3 3 33\n", | |
"0 0 00\n", | |
"1 1 11\n", | |
"4 4 44\n", | |
"5 5 55\n", | |
"8 8 88\n", | |
"9 9 99" | |
] | |
}, | |
"execution_count": 15, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"read()" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "dask-3.8.1", | |
"language": "python", | |
"name": "dask-3.8.1" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.8.1" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 4 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment