baolongnguyenmac / build-data-warehouse

Demo ETL

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Learn Spark using PySpark

  • Đây là đống code dùng để tiếp thu thứ kiến thức kỳ quái mang tên Spark
  • Spark được viết bằng Java, PySpark là giao diện Python của nó
  • Spark dùng để handle các file data có kích thước lớn. Nó tính toán trên RAM nên mọi thứ khá nhanh

Các công cụ sử dụng

  • Spark
  • PySpark
  • Pandas (đụng tới chút xíu)
  • pymssql
  • SQL Server

Cài Spark và PySpark (cho MacOS)

  • Có thể làm theo hướng dẫn trong đường link này
  • Máy tui sử dụng MacOS và 3 version Java (nên có 3 con path cho java)
  • Configure path in file ~/.zshrc cho terminal ZSH hoặc ~/.bashrc cho bash thông thường
    # >>> setup java_home >>>
    export JAVA_16_HOME=/usr/local/opt/java/libexec/openjdk.jdk/Contents/Home
    export JAVA_HOME=/usr/local/opt/java11/libexec/openjdk.jdk/Contents/Home
    export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
    
    alias java8='export JAVA_HOME=$JAVA_8_HOME'
    alias java11='export JAVA_HOME=$JAVA_11_HOME'
    alias java16='export JAVA_HOME=$JAVA_16_HOME'
    
    # default: java8 for running pyspark without any error
    java8
    
    # <<< setup java_home <<<
    
    export SPARK_HOME=/usr/local/Cellar/apache-spark/3.1.2/libexec
    export PATH=/usr/local/Cellar/apache-spark/3.1.2/bin:$PATH
    #export PYSPARK_SUBMIT_ARGS="--master local[2] pyspark-shell"
    #export PYSPARK_PYTHON=jupyter
    #export PYSPARK_DRIVER_PYTHON='notebook'

Cài PyMssql (cho MacOS)

  • Có thể tham khảo tại đường link này

  • Cần phải cài freetds trước khi cài pymssql

    brew install 
  • Sau đó cài Pymssql được kéo trực tiếp từ github về

    pip3 install git+https://github.com/pymssql/pymssql.git 
    
  • Cầu nguyện cho mọi thứ work với nhau

2 folders bên trên

  • ./Learn PySpark: Có thể đọc về các sử dụng cơ bản của PySpark ở đây
  • ./ETL: Demo quá trình ETL dữ liệu từ source về data warehouse sẽ trông như thế nào. Có thể đọc cuốn Buiding A Data Warehouse with Example (Vincent Rainardi) để hiểu các khái niệm cơ bản, về quy trình ETL dữ liệu hay build 1 data warehouse sẽ diễn ra như thế nào
    • ./ETL/Raw Data: Chứa 1 file data với gần 10.000 dòng dữ liệu giao dịch (Chính là file SuperStore trong dữ liệu demo của Tableau). Data từ 1 file chính (customer_order.csv) được cắt ra thành 5 file bằng nhau, mỗi file chứa khoảng 1998 dòng
    • ./ETL/SQL: Chứa các schema databases của Source data, meta database, data warehouse
    • ./ETL/src: Chứa source code mô phỏng quá trình source system thay đổi theo thời gian, và code mô phỏng quá trình handle các update, new creation trong source

About

Demo ETL


Languages

Language:Jupyter Notebook 69.2%Language:Python 25.8%Language:TSQL 5.0%