1. Spark与Iceberg数据湖实战:从参数调优到表引擎解析
在大数据生态中,Spark与Iceberg的结合正成为新一代数据湖架构的标准实践。今天我将分享两个典型场景下的实战经验:YARN集群模式下的Spark SQL查询执行,以及本地模式下的Iceberg表创建与元数据管理。这些看似简单的命令行背后,藏着不少值得深究的细节。
1.1 YARN集群模式下的资源配置艺术
先看第一个示例,这是在YARN集群上执行的多表联合查询:
bash复制${SPARK_HOME}/bin/spark-sql \
--master yarn \
--deploy-mode client \
--conf spark.driver.cores=1 \
--conf spark.driver.memory=1G \
--conf spark.executor.instances=1 \
--conf spark.executor.cores=1 \
--conf spark.executor.memory=1G \
--jars /usr/local/spark/jars/iceberg-spark-runtime-3.4_2.12-1.4.1.jar \
--conf spark.executor.userClassPathFirst=true \
-e "SELECT '用户维表' as desc, count(1) as cnt FROM dwd.jogos_all_user_detail WHERE t_date='20260304'
UNION ALL
SELECT '广告归因留存', count(1) FROM dwd.adgy_define_detailsbyusertype WHERE t_date='20260304'
UNION ALL
SELECT '用户数据迭代', count(1) FROM dwd.jogos_userdataiter_newuser_detail WHERE reg_date='20260304'
UNION ALL
SELECT '活动', count(1) FROM dwd.jogos_smzq_metrics_detail WHERE t_date='20260304'
UNION ALL
SELECT '生命周期标签', count(1) FROM dwd.jogos_smzq_tag_detail WHERE t_date='20260304'"
这个配置有几个关键点值得注意:
- 资源分配策略:采用1个executor,每个executor配置1核1G内存。这种配置适合轻量级查询,但要注意:
- 对于包含多表UNIO
