
# 为什么有时访问没有权限的parquet表时，在上报"Missing Privileges"错误提示之前，会运行一个Job？
#### 问题
为什么有时访问没有权限的parquet表时，在上报"Missing Privileges"错误提示之前，会运行一个Job？
#### 回答
Spark SQL对用户SQL语句的执行逻辑是：首先解析出语句中包含的表，再获取表的元数据信息，然后对权限进行检查。
当表是parquet表时，元数据信息包括文件的Split信息。Split信息需要调用HDFS的接口去读取，当表包含的文件数量很多时，串行读取Split信息变得缓慢，影响性能。故对此做了优化，当表包含的文件大于一定阈值（即spark.sql.sources.parallelSplitDiscovery.threshold参数值）时，会生成一个Job，利用Executor的并行能力去读取，从而提升执行效率。
由于权限检查在获取表元数据之后，因此当读取的parquet表包含的文件数量很多时，会在报"Missing Privileges"之前，运行一个Job来并行读取元数据信息。
