tencent cloud

弹性 MapReduce

动态与公告
产品动态
产品公告
安全公告
产品简介
产品概述
产品优势
产品架构
产品功能
应用场景
约束与限制
技术支持范围
产品发行版
购买指南
EMR on CVM 计费说明
EMR on TKE 计费说明
EMR Serverless HBase 计费说明
快速入门
EMR on CVM 快速入门
EMR on TKE 快速入门
EMR on CVM 操作指南
规划集群
管理权限
配置集群
管理集群
管理服务
监控告警
智能管家
EMR on TKE 操作指南
EMR on TKE 简介
配置集群
管理集群
管理服务
监控运维
应用分析
EMR Serverless HBase 操作指南
EMR Serverless HBase 产品简介
配额与限制
规划实例
管理实例
监控告警
开发指南
EMR 开发指南
Hadoop开发指南
Spark 开发指南
HBASE开发指南
Phoenix on Hbase 开发指南
Hive 开发指南
Presto开发指南
Sqoop 开发指南
Hue 开发指南
Oozie 开发指南
Flume 开发指南
Kerberos 开发指南
Knox 开发指南
Alluxio 开发指南
Kylin 开发指南
Livy 开发指南
Kyuubi 开发指南
Zeppelin 开发指南
Hudi 开发指南
Superset 开发指南
Impala 开发指南
Druid 开发指南
Tensorflow 开发指南
Kudu 开发指南
Ranger 开发指南
Kafka 开发指南
Iceberg 开发指南
StarRocks 开发指南
Flink 开发指南
JupyterLab 开发指南
MLflow 开发指南
实践教程
EMR on CVM 运维实践
数据迁移实践
自定义伸缩实践教程
API 文档
History
Introduction
API Category
Cluster Resource Management APIs
Cluster Services APIs
User Management APIs
Data Inquiry APIs
Scaling APIs
Configuration APIs
Other APIs
Serverless HBase APIs
YARN Resource Scheduling APIs
Making API Requests
Data Types
Error Codes
常见问题
EMR on CVM常见问题
服务等级协议
联系我们

Meson 引擎

PDF
聚焦模式
字号
最后更新时间: 2025-09-26 16:41:56
Meson 引擎是 EMR Spark 内置的高性能向量化查询引擎,支持无感加速 Spark SQL 工作负载和 DataFrame API 调用,降低工作负载的总成本。相比开源Spark 在 TPC-DS 1TB 基准测试上有 2.7 倍性能提升。Meson 完全兼容 Apache Spark API,无需改变现有业务代码。在已支持 Meson 的 EMR 产品版本中,只需要修改少量配置即可启用。

原理介绍

随着 SSD 的广泛应用及网卡性能的显著提升,Spark 引擎的性能瓶颈更多由传统认知的 IO 转变为以 CPU 为主的计算资源。而围绕 JVM 的 CPU 优化方案(如 Codegen )存在诸多约束,如字节码长度、参数个数等存在限制,开发者也很难在 JVM 上利用现代 CPU 的一些特性。
Meson 引擎在 Spark 物理计划进行转换,使用 C++ 实现的向量化加速库执行计算,并将执行完的数据以列式方式返回,提升内存及带宽利用效率,进而突破性能瓶颈,可以使 Spark 作业效率得到有效的提升。

使用限制

Meson 引擎目前存在使用场景限制,在限制场景时 Meson 引擎将会进行 Fallback,回退到原生 Spark 引擎进行执行,由于 Fallback 需要进行必要的数据转换,回退次数过多,可能会导致总体运行时间比原生 Spark 引擎更慢。
请您提前了解 Meson 引擎主要的使用限制:
支持 Parquet 数据格式,ORC 支持暂不完善,其他数据格式暂不支持。
暂不支持 ANSI 模式。
暂不支持基于 RDD 的 Application。
暂不支持 Structured Streaming。
暂不支持基于 PySpark 的自定义 Python 代码。
暂不支持 MEMORY_ONLY 的 CacheTable。

适用场景

以下支持能力基于 Spark 3.5.3及以上版本提供。
注意:
Meson 未完全支持或不支持的存储格式、数据类型、算子和函数会 Fallback 至原生 Spark 引擎执行。

存储格式

Meson 引擎支持的数据存储格式:
支持的数据格式:Parquet、ORC
支持的表格式: Iceberg、Hive

数据类型

Meson 引擎支持的数据类型:
Byte、Short、Int、Long
Boolean
String、Binary
Decimal
Float、Double
Date、Timestamp

算子

类型
已支持算子
未支持算子
Source
FileSourceScanExec、HiveTableScanExec、BatchScanExec、InMemoryTableScanExec
-
Sink
DataWritingCommandExec、InsertIntoHiveTable、
-
Common
FilterExec、ProjectExec、SortExec、UnionExec
-
Aggregate
HashAggregateExec
SortAggregateExec、ObjectHashAggregateExec
Join
BroadcastHashJoinExec、ShuffledHashJoinExec、SortMergeJoinExec、BroadcastNestedLoopJoinExec、CartesianProductExec
-
Window
WindowExec
WindowGroupLimitExec
Exchange
ShuffleExchangeExec、ReusedExchangeExec、BroadcastExchangeExec、CoalesceExec
CustomShuffleReaderExec
Limit
GlobalLimitExec、LocalLimitExec、TakeOrderedAndProjectExec、CollectLimitExec
-
Subquery
SubqueryBroadcastExec
-
Other
ExpandExec、GenerateExec、CollectTailExec、RangeExec
RangeExec、SampleExec

函数

类型
已支持函数
Generator Functions
explode,explode_outer,inline,inline_outer,posexplode,posexplode_outer,stack
Window Functions
cume_dist,dense_rank,lag,lead,nth_value,ntile,percent_rank,rank,row_number
Aggregate Functions
any,any_value,approx_count_distinct,approx_percentile,array_agg,avg,bit_and,bit_or,bit_xor,bool_and,bool_or,collect_list,collect_set,corr,count,count_if,covar_pop,covar_samp,every,first,first_value,grouping,grouping_id,kurtosis,last,last_value,max,max_by,mean,median,min,min_by,percentile,percentile_approx,regr_avgx,regr_avgy,regr_count,regr_intercept,regr_r2,regr_slope,regr_sxx,regr_sxy,regr_syy,skewness,some,std,stddev,stddev_pop,stddev_samp,sum,try_avg,try_sum,var_pop,var_samp,variance
Array Functions
array,array_append,array_compact,array_contains,array_distinct,array_except,array_insert,array_intersect,array_join,array_max,array_min,array_position,array_prepend,array_remove,array_repeat,array_union,arrays_overlap,arrays_zip,flatten,get,shuffle,slice,sort_array
Bitwise Functions
&,^,bit_count,bit_get,getbit,shiftright,|,~
Collection Functions
array_size,cardinality,concat,reverse,size
Conditional Functions
coalesce,if,ifnull,nanvl,nullif,nvl,nvl2,when
Conversion Functions
bigint,binary,boolean,cast,date,decimal,double,float,int,smallint,string,timestamp,tinyint
Date and Timestamp Functions
add_months,date_add,date_diff,date_format,date_from_unix_date,date_sub,date_trunc,dateadd,datediff,day,dayofmonth,dayofweek,dayofyear,extract,from_unixtime,from_utc_timestamp,hour,last_day,make_date,make_timestamp,make_ym_interval,minute,month,next_day,quarter,second,timestamp_micros,timestamp_millis,to_unix_timestamp,to_utc_timestamp,trunc,unix_date,unix_micros,unix_millis,unix_seconds,unix_timestamp,weekday,weekofyear,year
Hash Functions
crc32,hash,md5,sha,sha1,sha2,xxhash64
JSON Functions
from_json,get_json_object,json_array_length,json_object_keys,json_tuple,schema_of_json,to_json
Lambda Functions
aggregate,array_sort,exists,filter,forall,map_filter,map_zip_with,reduce,transform,transform_keys,transform_values,zip_with
Map Functions
element_at,map,map_concat,map_contains_key,map_entries,map_keys,map_values,str_to_map,try_element_at
Mathematical Functions
%,*,+,-,/,abs,acos,acosh,asin,asinh,atan,atan2,atanh,bin,cbrt,ceil,ceiling,conv,cos,cosh,cot,csc,degrees,e,exp,expm1,factorial,floor,greatest,hex,hypot,least,log,log10,log1p,log2,mod,negative,pi,pmod,positive,pow,power,rand,random,rint,round,sec,shiftleft,sign,signum,sinh,sqrt,try_add,unhex,width_bucket
Misc Functions
assert_true,equal_null,spark_partition_id,uuid,version,||
Predicate Functions
!,!=,<,<=,<=>,<>,=,==,>,>=,and,between,case,ilike,in,isnan,isnotnull,isnull,like,not,or,regexp,regexp_like
String Functions
ascii,base64,bit_length,btrim,char,char_length,character_length,chr,concat_ws,contains,endswith,find_in_set,format_number,format_string,initcap,instr,lcase,left,len,length,levenshtein,locate,lower,lpad,ltrim,luhn_check,mask,overlay,position,regexp_extract,regexp_extract_all,regexp_replace,repeat,replace,right,rpad,rtrim,soundex,split,split_part,startswith,substr,substring,substring_index,translate,trim,ucase,unbase64,upper
Struct Functions
named_struct,struct
URL Functions
url_decode,url_encode

开启 Meson 加速

EMR-V3.7.0

创建 EMR- V3.7.0 版本集群,您可以通过 EMR 控制台 配置管理 功能,在 spark-defaults.conf 配置文件中新增以下配置使用该特性:
参数
说明
spark.plugins
Spark 用到的插件,参数值设置为 org.apache.gluten.GlutenPlugin(如果已经配置了 spark.plugins,则可以将 org.apache.gluten.GlutenPlugin 加到其中,用逗号","隔开)
spark.memory.offHeap.enabled
设置为 true,Meson 加速需要用到 JVM 的 off memory
spark.memory.offHeap.size
设置 offHeap 内存的大小,根据实际情况设置,详见不同规格executor内存配置推荐。
spark.shuffle.manager
Meson 使用的列式 shuffle manager, 参数值设置为:org.apache.spark.shuffle.sort.ColumnarShuffleManager
不同规格 Executor 内存配置推荐:
executor-cores
spark.executor.memory
spark.memory.offHeap.size
2
2GB
4GB
4
3GB
10GB
8
6GB
20GB

EMR-V3.6.1(beta)

创建 EMR- V3.6.1 版本集群,您可以通过 EMR 控制台 配置管理 功能,在 spark-defaults.conf 配置文件中新增以下配置使用该特性:
参数
说明
spark.plugins
Spark 用到的插件,参数值设置为 org.apache.gluten.GlutenPlugin(如果已经配置了 spark.plugins,则可以将 org.apache.gluten.GlutenPlugin 加到其中,用逗号","隔开)
spark.memory.offHeap.enabled
设置为 true,Native 加速需要用到 JVM 的 off memory
spark.memory.offHeap.size
设置 offHeap 内存的大小,根据实际情况设置,初始可设置为1G
spark.shuffle.manager
Meson 使用的列式 shuffle manager, 参数值设置为:org.apache.spark.shuffle.sort.ColumnarShuffleManager
spark.driver.extraClassPath
Spark 用到的 Gluten native jar,jar 包默认路径在 /usr/local/service/spark/gluten 下
spark.executor.extraClassPath
Spark 用到的 Gluten native jar,jar 包默认路径在 /usr/local/service/spark/gluten 下
spark.executorEnv.LIBHDFS3_CONF
集成的 HDFS 集群配置文件的路径,默认在/usr/local/service/hadoop/etc/hadoop/hdfs-site.xml

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈