From 036ca8b5e63d7e19544457741280a5d62e117def Mon Sep 17 00:00:00 2001 From: adiso75 Date: Wed, 24 Jun 2020 17:51:23 +0300 Subject: [PATCH] Add data ingestion and preperation read.me --- assets/images/pipeline-diagram.JPG | Bin 0 -> 120231 bytes data-ingestion-and-preparation/README.ipynb | 290 ++++++++++++++++++++ data-ingestion-and-preparation/README.md | 189 +++++++++++++ 3 files changed, 479 insertions(+) create mode 100644 assets/images/pipeline-diagram.JPG create mode 100644 data-ingestion-and-preparation/README.ipynb create mode 100644 data-ingestion-and-preparation/README.md diff --git a/assets/images/pipeline-diagram.JPG b/assets/images/pipeline-diagram.JPG new file mode 100644 index 0000000000000000000000000000000000000000..bb33a25775ad221bb209cfd60810bf696acf30ef GIT binary patch literal 120231 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\n", + "## Overview\n", + "This notebook provides an overview of the various options for collecting, storing and manipulating data in Iguazio with references to built-in
sample notebooks. The platform address the various requirements for manipulating data in each of the data science lifeccyle steps
\n", + "Thus, provides a wide set of tools for handling data using various fraemworks.
\n", + "\n", + "Working with data in the various stepts of the pipeline may require different tools and frameworks for each step especially when it comes to the difference
\n", + "mechanism needed when you are in your research phase vs an operational phase where you need to build an inferene production pipeline
\n", + "You may use different tools and technics within those various steps.
\n", + "In the notebook you'll find short sections explaining the various solutions with links to more detailed notebooks
\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\"pipeline-diagram\"
\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "## Basic flow\n", + "\n", + "In this notebook you’ll go through basic scenarios of getting and manipulating data in Iguazio along with explaining some core concepts of working with data on the system.
\n", + "Thie notebook covers how to get a csv file from an S3 bucket, convert it into a key value table using Spark, Run a SQL query and convert it into a parquet file
\n", + "[**basic tutorial**](getting-started-basic.ipynb) \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Reading data from external databases\n", + "\n", + "Here are several examples of how to fetch data from external databases\n", + "\n", + "### Using Spark over JDBC\n", + "Spark SQL includes a data source that can read data from other databases using Java database connectivity (JDBC).
\n", + "The results are returned as a Spark DataFrame that can easily be processed in Spark SQL or joined with other data sources.
\n", + "In this notebooks we have several examples of getting data from various databases such as MySQL , Oracle, Postgress and others
\n", + "[**Spark over JDBC**](spark-jdbc.ipynb)\n", + "\n", + "### Using SQL Alchemy \n", + "In this notebook users can learn how to work with SQLAlchemy which is the Python SQL toolkit and Object Relational Mapper
\n", + "that gives application developers the full power and flexibility of SQL and then read the data into dataframes and work with Python data frame on the dataset
\n", + "[**Using SQLAlchemy**](read-external-db.ipynb)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "## Working with Spark\n", + "\n", + "Spark is a built-in service in Iguazio and it uses for both analyzing and manipulating a large set of data in a distributed way as well as for analyzing streams using its Spark streaming module
\n", + "Spark lets you query structured data inside Spark programs by using either SQL or a familiar DataFrame API.
\n", + "DataFrames and SQL provide a common way to access a variety of data sources.
\n", + "In this notebook, you'll learn how to use Spark SQL and DataFrames to access objects, tables, and unstructured data that persist in the data containers of the Iguazio data platform.
\n", + "The platform's Spark drivers implement the data-source API and support predicate push down:
\n", + "the queries are passed to the platform's data store, which returns only the relevant data.
\n", + "This allow accelerated and high-speed access from Spark to data stored in the platform.
\n", + "[**Working with Spark**](spark-sql-analytics.ipynb)\n", + "\n", + "### Ingesting data using Spark\n", + "Spark can be useful for ingesting data into the system for both batch or micro batch processing
\n", + "https://www.iguazio.com/docs/tutorials/latest-release/getting-started/data-ingestion-w-spark-qs/\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "## Working with Streaming\n", + "\n", + "### Using Nuclio to get data from common streaming engines\n", + "Iguazio has a serverless function (AKA Nuclio) that provides a mechanism to analyze and process real time events from various streaming engines.
\n", + "The following streaming frameworks are being supported:
\n", + "Kafaka, kinesis, Azure event hub, Iguazio stream, RabbitMQ, MQTT
\n", + "Using Nuclio functions for getting and analyzing streaming data in real time is a very common practice when building a real time pipeline.
\n", + "Streaming could be: images/videos, telemetry data , financial transactions, web clicks , sensors data etc..
\n", + "Along with reading the stream events, customers can implement their own logic within the nuclio function to manipulate or enrich the data and prepare it for the next step in the pipeline.
\n", + "The Nuclio serverless function can sustain high load of workloads with very low latencies ,thus it makes it very useful for building an event driven applications with strict latency requirements.
\n", + "Here you can find additional information:
\n", + "https://www.iguazio.com/docs/intro/latest-release/serverless/\n", + "\n", + "### Iguazio built-in streaming (V3IO) \n", + "Iguazio has its own built-in streaming engine called V3IO stream. This stream is often being used in real time pipeline for writing into a queue.
\n", + "it can also serve as a streaming engine in a similar way to kafka or kinesis so users don't need to use an external one.
\n", + "In this notebook you’ll find an example of writing a nuclio function that uses Iguazio stream:
\n", + "[**Reading from V3IO stream**](../demos/real-time-user-segmentation.ipynb)\n", + "\n", + "### Spark streaming\n", + "Need an example\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "## Runnig SQL queries on Iguazio data layer\n", + "\n", + "Users can run SQL queries to fetch data that resides on Iguazio key value and Parquet files. There are two options to run SQL query:
\n", + "\n", + "### Running full ANSII SQL queries\n", + "Iguazio has a built-in service called Presto. Presto is an open source that provides distributed framework for running SQL queries.
\n", + "To run a query using Presto from your notebook all you need to do is to use %SQL magic command and then write the query.
\n", + "Those queries will be running as distributed queries across Iguazio application nodes
\n", + "In this basic tutorial you can find an example for running such query using the %SQL magic command
\n", + "[**basic tutorial**](getting-started-basic.ipynb)
\n", + "\n", + "Note that for running queries on Parquet table you need to work with Hive tables. In this notebook you can find an example
\n", + "of a script that takes a csv file and convert it to a hive table.
\n", + "[**Working with Hive tables**](csv-to-hive.ipynb)
\n", + "\n", + "### Using Spark SQL\n", + "Spark is a built-in service in running in the platfrom and users can run SQL queries using Spark SQL
\n", + "[**Running SQL with Spark**](spark-sql-analytics.ipynb)\n", + "\n", + "\n", + "### Running SQL from a Nuclio function \n", + "In some cases users need to run a SQL query as part an event driven application. In this notebook you'll see an example of
\n", + "running a SQL query as part of a nuclio function
\n", + "[**Running SQL from Nuclio function**](nuclio-read-via-presto.ipynb)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "## Managing Parquet files\n", + "\n", + "Parquet is a columnar storage format that provides high-density high-performance file organization. The following section demonstrates how to create and write data to a Parquet table in the Iguazio Data Science Platform and read its contents. For information about
reading and writing Parquet files from Python applications view the notebook below:
\n", + "[**Managing Parquet files**](parquet-read-write.ipynb)
\n", + "\n", + "Once you bring Parquet files into the platform you may want to create hive tables and run SQL queries on those tables
\n", + "This notebook covers the way to do it:
\n", + "[**Convert Parquet to hive**](parquet-to-hive.ipynb)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "## Accessing Iguazio's key value and Time series data using a native library (Frames)\n", + "\n", + "Iguazio has a multi model data layer that store data as key value and time series format. Users can access the data using various tools and APIs such as Spark, SQL or pandas dataframe and it can also access the data using a build-in framework called Frames. \n", + "Frames is a multi-model open-source data-access library, developed by Iguazio, which provides a unified high-performance DataFrame API for working with data in the data store of the Iguazio Data Science Platform. Frames currently supports the NoSQL (key/value) and time-series (TSDB) data models via its kv and tsdb backends.\n", + "This notebook explain how to work with Frames:
\n", + "[**Working with Frames**](frames.ipynb)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "## Getting data from AWS S3\n", + "\n", + "The simple way for getting data from S3 is just by using a curl command sending a request to the AWS S3 bucket\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%sh\n", + "CSV_PATH=\"/User/examples/stocks.csv\"\n", + "curl -L \"iguazio-sample-data.s3.amazonaws.com/2018-03-26_BINS_XETR08.csv\" > ${CSV_PATH}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Future – need to add a reference to the XCP tool and how to load bulk of data from S3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "## Running distributed python code with Dask\n", + "\n", + "The dask frameworks enabling users to parallelize internal systems as not all computations fit into a dataframe. Dask exposes lower-level APIs letting you build custom systems for in-house applications. This helps parallelize python processes and dramatically accelerate their performance
\n", + "[**Configuring a dask cluster**](dask-cluster.ipynb)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "## Running dataframes on GPUs via Nvidia cuDF" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Iguazio has deployed the Nvidia Rapids library as part of its solution enabling users to easily access GPU resources.
\n", + "cuDF is a GPU DataFrame library for loading, joining, aggregating, filtering, and otherwise manipulating data.
\n", + "cuDF provides a pandas-like API that will be familiar to data engineers & data scientists, so they can use it to easily accelerate their workflows without going into the details of CUDA programming.
\n", + "This notebook provide a sample example of using cuDF
\n", + "[**cudf vs pandas dataframe**](gpu-cudf-vs-pd.ipynb)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.6.8" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/data-ingestion-and-preparation/README.md b/data-ingestion-and-preparation/README.md new file mode 100644 index 00000000..e4eb5c90 --- /dev/null +++ b/data-ingestion-and-preparation/README.md @@ -0,0 +1,189 @@ +# Data ingestion and preparation overview + +- [Overview](#gs-overview) +- [Basic flow](#basic) +- [Reading from external database](#databases) +- [Working with Spark](#spaek) +- [Working with streaming](#streaming) +- [Running SQL on Iguazio](#sql) +- [Managing Parquet files](#parquet) +- [Accessing Iguazio key value and time series](#frames) +- [Getting data from AWS S3](#s3) +- [Running dataframes on GPUs via Nvidia cuDF](#gpu) +- [Running distributed Python with Dask](#dask) + + +## Overview +This notebook provides an overview of the various options for collecting, storing and manipulating data in Iguazio with references to built-in
sample notebooks. The platform address the various requirements for manipulating data in each of the data science lifeccyle steps
+Thus, provides a wide set of tools for handling data using various fraemworks.
+ +Working with data in the various stepts of the pipeline may require different tools and frameworks for each step especially when it comes to the difference
+mechanism needed when you are in your research phase vs an operational phase where you need to build an inferene production pipeline
+You may use different tools and technics within those various steps.
+In the notebook you'll find short sections explaining the various solutions with links to more detailed notebooks
+ + + + + +
pipeline-diagram
+ + + + + +## Basic flow + +In this notebook you’ll go through basic scenarios of getting and manipulating data in Iguazio along with explaining some core concepts of working with data on the system.
+Thie notebook covers how to get a csv file from an S3 bucket, convert it into a key value table using Spark, Run a SQL query and convert it into a parquet file
+[**basic tutorial**](getting-started-basic.ipynb) + + + +## Reading data from external databases + +Here are several examples of how to fetch data from external databases + +### Using Spark over JDBC +Spark SQL includes a data source that can read data from other databases using Java database connectivity (JDBC).
+The results are returned as a Spark DataFrame that can easily be processed in Spark SQL or joined with other data sources.
+In this notebooks we have several examples of getting data from various databases such as MySQL , Oracle, Postgress and others
+[**Spark over JDBC**](spark-jdbc.ipynb) + +### Using SQL Alchemy +In this notebook users can learn how to work with SQLAlchemy which is the Python SQL toolkit and Object Relational Mapper
+that gives application developers the full power and flexibility of SQL and then read the data into dataframes and work with Python data frame on the dataset
+[**Using SQLAlchemy**](read-external-db.ipynb) + + + +## Working with Spark + +Spark is a built-in service in Iguazio and it uses for both analyzing and manipulating a large set of data in a distributed way as well as for analyzing streams using its Spark streaming module
+Spark lets you query structured data inside Spark programs by using either SQL or a familiar DataFrame API.
+DataFrames and SQL provide a common way to access a variety of data sources.
+In this notebook, you'll learn how to use Spark SQL and DataFrames to access objects, tables, and unstructured data that persist in the data containers of the Iguazio data platform.
+The platform's Spark drivers implement the data-source API and support predicate push down:
+the queries are passed to the platform's data store, which returns only the relevant data.
+This allow accelerated and high-speed access from Spark to data stored in the platform.
+[**Working with Spark**](spark-sql-analytics.ipynb) + +### Ingesting data using Spark +Spark can be useful for ingesting data into the system for both batch or micro batch processing
+https://www.iguazio.com/docs/tutorials/latest-release/getting-started/data-ingestion-w-spark-qs/ + + + + +## Working with Streaming + +### Using Nuclio to get data from common streaming engines +Iguazio has a serverless function (AKA Nuclio) that provides a mechanism to analyze and process real time events from various streaming engines.
+The following streaming frameworks are being supported:
+Kafaka, kinesis, Azure event hub, Iguazio stream, RabbitMQ, MQTT
+Using Nuclio functions for getting and analyzing streaming data in real time is a very common practice when building a real time pipeline.
+Streaming could be: images/videos, telemetry data , financial transactions, web clicks , sensors data etc..
+Along with reading the stream events, customers can implement their own logic within the nuclio function to manipulate or enrich the data and prepare it for the next step in the pipeline.
+The Nuclio serverless function can sustain high load of workloads with very low latencies ,thus it makes it very useful for building an event driven applications with strict latency requirements.
+Here you can find additional information:
+https://www.iguazio.com/docs/intro/latest-release/serverless/ + +### Iguazio built-in streaming (V3IO) +Iguazio has its own built-in streaming engine called V3IO stream. This stream is often being used in real time pipeline for writing into a queue.
+it can also serve as a streaming engine in a similar way to kafka or kinesis so users don't need to use an external one.
+In this notebook you’ll find an example of writing a nuclio function that uses Iguazio stream:
+[**Reading from V3IO stream**](../demos/real-time-user-segmentation.ipynb) + +### Spark streaming +Need an example + + + + +## Runnig SQL queries on Iguazio data layer + +Users can run SQL queries to fetch data that resides on Iguazio key value and Parquet files. There are two options to run SQL query:
+ +### Running full ANSII SQL queries +Iguazio has a built-in service called Presto. Presto is an open source that provides distributed framework for running SQL queries.
+To run a query using Presto from your notebook all you need to do is to use %SQL magic command and then write the query.
+Those queries will be running as distributed queries across Iguazio application nodes
+In this basic tutorial you can find an example for running such query using the %SQL magic command
+[**basic tutorial**](getting-started-basic.ipynb)
+ +Note that for running queries on Parquet table you need to work with Hive tables. In this notebook you can find an example
+of a script that takes a csv file and convert it to a hive table.
+[**Working with Hive tables**](csv-to-hive.ipynb)
+ +### Using Spark SQL +Spark is a built-in service in running in the platfrom and users can run SQL queries using Spark SQL
+[**Running SQL with Spark**](spark-sql-analytics.ipynb) + + +### Running SQL from a Nuclio function +In some cases users need to run a SQL query as part an event driven application. In this notebook you'll see an example of
+running a SQL query as part of a nuclio function
+[**Running SQL from Nuclio function**](nuclio-read-via-presto.ipynb) + + + + +## Managing Parquet files + +Parquet is a columnar storage format that provides high-density high-performance file organization. The following section demonstrates how to create and write data to a Parquet table in the Iguazio Data Science Platform and read its contents. For information about
reading and writing Parquet files from Python applications view the notebook below:
+[**Managing Parquet files**](parquet-read-write.ipynb)
+ +Once you bring Parquet files into the platform you may want to create hive tables and run SQL queries on those tables
+This notebook covers the way to do it:
+[**Convert Parquet to hive**](parquet-to-hive.ipynb) + + + + +## Accessing Iguazio's key value and Time series data using a native library (Frames) + +Iguazio has a multi model data layer that store data as key value and time series format. Users can access the data using various tools and APIs such as Spark, SQL or pandas dataframe and it can also access the data using a build-in framework called Frames. +Frames is a multi-model open-source data-access library, developed by Iguazio, which provides a unified high-performance DataFrame API for working with data in the data store of the Iguazio Data Science Platform. Frames currently supports the NoSQL (key/value) and time-series (TSDB) data models via its kv and tsdb backends. +This notebook explain how to work with Frames:
+[**Working with Frames**](frames.ipynb) + + + + +## Getting data from AWS S3 + +The simple way for getting data from S3 is just by using a curl command sending a request to the AWS S3 bucket + + + +```sh +%%sh +CSV_PATH="/User/examples/stocks.csv" +curl -L "iguazio-sample-data.s3.amazonaws.com/2018-03-26_BINS_XETR08.csv" > ${CSV_PATH} +``` + +Future – need to add a reference to the XCP tool and how to load bulk of data from S3 + + + +## Running distributed python code with Dask + +The dask frameworks enabling users to parallelize internal systems as not all computations fit into a dataframe. Dask exposes lower-level APIs letting you build custom systems for in-house applications. This helps parallelize python processes and dramatically accelerate their performance
+[**Configuring a dask cluster**](dask-cluster.ipynb) + + + + +## Running dataframes on GPUs via Nvidia cuDF + +Iguazio has deployed the Nvidia Rapids library as part of its solution enabling users to easily access GPU resources.
+cuDF is a GPU DataFrame library for loading, joining, aggregating, filtering, and otherwise manipulating data.
+cuDF provides a pandas-like API that will be familiar to data engineers & data scientists, so they can use it to easily accelerate their workflows without going into the details of CUDA programming.
+This notebook provide a sample example of using cuDF
+[**cudf vs pandas dataframe**](gpu-cudf-vs-pd.ipynb) + + + +```python + +```