HCatClientHMSImpl.dropPartitions() currently has an embarrassingly inefficient implementation. The partial partition-spec is converted into a filter-string. The partitions are fetched from the server, and then dropped one by one.
Here's a reimplementation that uses the ExprNode-based HiveMetaStoreClient.dropPartitions(). It cuts out the excessive back-and-forth between the HMS and the client-side. It also reduces the memory footprint (from loading all the partitions that are to be dropped).