更新时间:2023-03-17 GMT+08:00

Datasource表优化

操作场景

将datasource表的分区消息存储到Metastore中,并在Metastore中对分区消息进行处理。

  • 优化datasource表,支持对表中分区执行增加、删除和修改等语法,从而增加与Hive的兼容性。
  • 支持在查询语句中,把分区裁剪并下压到Metastore上,从而过滤掉不匹配的分区。
    示例如下:
    select count(*) from table where partCol=1;    //partCol列为分区列

    此时,在物理计划中执行TableScan操作时,只处理分区(partCol=1)对应的数据。

操作步骤

要启动Datasource表优化,在Spark客户端的“spark-defaults.conf”配置文件中进行设置。
表1 参数介绍

参数

描述

默认值

spark.sql.hive.manageFilesourcePartitions

是否启用Metastore分区管理(包括数据源表和转换的Hive表)。

  • true:启用Metastore分区管理,即数据源表存储分区在Hive中,并在查询语句中使用Metastore修剪分区。
  • false:不启用Metastore分区管理。

true

spark.sql.hive.metastorePartitionPruning

是否支持将predicate下压到Hive Metastore中。

  • true:支持,目前仅支持Hive表的predicate下压。
  • false:不支持

true

spark.sql.hive.filesourcePartitionFileCacheSize

启用内存中分区文件元数据的缓存大小。

所有表共享一个可以使用指定的num字节进行文件元数据的缓存。

只有当“spark.sql.hive.manageFilesourcePartitions”配置为“true”时,该配置项才会生效。

250 * 1024 * 1024

spark.sql.hive.convertMetastoreOrc

设置ORC表的处理方式:

  • false:Spark SQL使用Hive SerDe处理ORC表。
  • true:Spark SQL使用Spark内置的机制处理ORC表。

true