Hands-on Guide to Apache Spark 3: Build Scalable Computing Engines for Batch and Stream Data Processing