Bolt 使用 C++ 实现的向量化执行引擎、结合运行时 LLVM Codegen 代码生成技术,大幅提升了多核 CPU 的并行执行性能效率。在分布式 SQL 查询引擎 Spark 和 Presto 上,替换传统的 Java 引擎,比开源产品性能提升了2~5倍,大幅提升了查询速度、降低了资源成本。
本文将介绍如何在Serverless EMR中使用Bolt。
当创建独占队列时,可选择 EngineRuntime 为 Bolt,为队列开启 bolt,运行在该队列 Default 计算组的作业将默认运行在 Bolt 环境。
如不希望使用Bolt环境,可手动指定参数:set emr.serverless.bolt.enabled=false。
要在已有的队列开启 Bolt,可通过编辑计算组,更新 EngineEngineRuntime 的方式实现。修改 EngineEngineRuntime 为 Bolt 后保存,会在队列默认开启 bolt。
如希望在公共队列或非 bolt 独占队列上实现 bolt ,可通过作业参数实现作业级别开启 bolt 。
set emr.serverless.bolt.enabled=true
当创建 spark warehouse 和 presto warehouse 时,可选择 EngineRuntime 选项为 Bolt,为计算组开启 bolt ,创建计算组 EngineRuntime 值默认与所属队列一致。开启 Bolt 的计算组将默认运行在 bolt 环境,如 bolt 执行失败后自动路由至默认环境。
针对 spark 计算组,可通过编辑计算组,打开 Bolt。开启 bolt 需重启计算组。
对于 presto 计算组,暂时不支持编辑的方式开启 bolt,如需开启,需要重建 presto 计算组。
用户在使用 Bolt 加速能力时,将按照实际作业消耗的 CUH 支付相应的加速费用,详细计费规则请参见Bolt 加速引擎计费详情。