[ https://issues.apache.org/jira/browse/SPARK-38230?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Coal Chan updated SPARK-38230: ------------------------------ Description: In `org.apache.spark.sql.execution.datasources. InsertIntoHadoopFsRelationCommand`, ` sparkSession.sessionState.catalog.listPartitions ` will call method `org.apache.hadoop.hive.metastore.listPartitionsPsWithAuth` of hive metastore client, this method will produce multiple queries per partition on hive metastore db. When you insert into a table which has too many partitions(ie: 10k), it will produce too many queries on hive metastore db(ie: n * 10k = 10nk), it puts a lot of strain on the database. In fact, it calls method `listPartitions` in order to get locations of partitions and get `customPartitionLocations`. But in most cases, we do not have custom partitions, we can just get partition names, so we can call methodĀ listPartitionNames. was: In `org.apache.spark.sql.execution.datasources. InsertIntoHadoopFsRelationCommand`, ` sparkSession.sessionState.catalog.listPartitions ` will call method `org.apache.hadoop.hive.metastore.listPartitionsPsWithAuth` of hive metastore client, this method will produce multiple queries per partition on hive metastore db. When you insert into a table which has too many partitions(ie: 10k), it will produce too many queries on hive metastore db(ie: n * 10k = 10nk), it puts a lot of strain on the database. In fact, it calls method `listPartitions` in order to get locations of partitions and get `customPartitionLocations`. But in most cases, we do not have custom partitions, so we can just get partition names. > InsertIntoHadoopFsRelationCommand unnecessarily fetches details of partitions > in most cases > ------------------------------------------------------------------------------------------- > > Key: SPARK-38230 > URL: https://issues.apache.org/jira/browse/SPARK-38230 > Project: Spark > Issue Type: Improvement > Components: SQL > Affects Versions: 3.0.2 > Reporter: Coal Chan > Priority: Major > > In `org.apache.spark.sql.execution.datasources. > InsertIntoHadoopFsRelationCommand`, ` > sparkSession.sessionState.catalog.listPartitions > ` will call method > `org.apache.hadoop.hive.metastore.listPartitionsPsWithAuth` of hive metastore > client, this method will produce multiple queries per partition on hive > metastore db. When you insert into a table which has too many partitions(ie: > 10k), it will produce too many queries on hive metastore db(ie: n * 10k = > 10nk), it puts a lot of strain on the database. > In fact, it calls method `listPartitions` in order to get locations of > partitions and get `customPartitionLocations`. But in most cases, we do not > have custom partitions, we can just get partition names, so we can call > methodĀ listPartitionNames. -- This message was sent by Atlassian Jira (v8.20.1#820001) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org For additional commands, e-mail: issues-h...@spark.apache.org