MapReduce服务 MRS-为什么有时访问没有权限的parquet表时,在上报“Missing Privileges”错误提示之前,会运行一个Job?:回答

时间:2023-11-01 16:25:25

回答

Spark SQL对用户SQL语句的执行逻辑是:首先解析出语句中包含的表,再获取表的元数据信息,然后对权限进行检查。

当表是parquet表时,元数据信息包括文件的Split信息。Split信息需要调用HDFS的接口去读取,当表包含的文件数量很多时,串行读取Split信息变得缓慢,影响性能。故对此做了优化,当表包含的文件大于一定阈值(即spark.sql.sources.parallelSplitDiscovery.threshold参数值)时,会生成一个Job,利用Executor的并行能力去读取,从而提升执行效率。

由于权限检查在获取表元数据之后,因此当读取的parquet表包含的文件数量很多时,会在报“Missing Privileges”之前,运行一个Job来并行读取元数据信息。

support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2035.html