题目一: 分析一条 TPCDS SQL
分析一条 TPCDS SQL(请基于 Spark 3.1.1 版本解答)
帮助文档:如何运行该 SQL:
1. 从 github 下载 TPCDS 数据生成器
git clone https://github.com/maropu/spark-tpcds-datagen.git
cd spark-tpcds-datagen
2. 下载 Spark3.1.1 到 spark-tpcds-datagen 目录并解压
wget https://archive.apache.org/dist/spark/spark-3.1.1/spark-3.1.1-bin-hadoop2.7.tgz
tar -zxvf spark-3.1.1-bin-hadoop2.7.tgz
3. 生成数据
mkdir -p tpcds-data-1g
export SPARK_HOME=./spark-3.1.1-bin-hadoop2.7
./bin/dsdgen --output-location tpcds-data-1g
4. 下载三个 test jar 并放到当前目录
wget https://repo1.maven.org/maven2/org/apache/spark/spark-catalyst_2.12/3.1.1/spark-catalyst_2.12-3.1.1-tests.jar
wget https://repo1.maven.org/maven2/org/apache/spark/spark-core_2.12/3.1.1/spark-core_2.12-3.1.1-tests.jar
wget https://repo1.maven.org/maven2/org/apache/spark/spark-sql_2.12/3.1.1/spark-sql_2.12-3.1.1-tests.jar
5. 执行 SQL
./spark-3.1.1-bin-hadoop2.7/bin/spark-submit --class org.apache.spark.sql.execution.benchmark.TPCDSQueryBenchmark --jars spark-core_2.12-3.1.1-tests.jar,spark-catalyst_2.12-3.1.1-tests.jar spark-sql_2.12-3.1.1-tests.jar --data-location tpcds-data-1g --query-filter "q73"
复制代码
题目二:架构设计题
你是某互联网公司的大数据平台架构师,请设计一套基于 Lambda 架构的数据平台架构,要求尽可能多的把课程中涉及的组件添加到该架构图中。并描述 Lambda 架构的优缺点,要求不少于 300 字。
在 lambda 架构中,通过双线计算,用离线补充实时数据,完成整体数据输出+展示。
lambda 架构优点:
职责边界清晰。离线和实时各自计算各自范围内的数据;
容错性。离线数据可以补充实时计算历史统计的数据;
复杂性隔离。离线数据,可以很好的掌控。采用增量算法处理实时数据,复杂性比离线要高很多。通过分开离线和实时计算,把复杂性隔离到实时计算,可以很好的提高整个系统的鲁棒性和可靠性。
lambda 架构缺点:
针对 lambda 模式来说,存在以下几个问题点:
同样需求两套代码
集群资源使用增多,因为离线任务+实时任务
离线结果和实时结果不一致问题
批量计算 T+1,当数据量大的时候,可能晚上计算不完
存储成本增大
评论