First, it's great to see that you have got Hive-MR3 up and running.
As far as I know, Trino is very efficient in accessing S3 because it uses its own custom S3 connector. In contrast, Hive (like other systems that use Hadoop library, such as Spark) relies on Hadoop library to access S3, which is less efficient. For example, it makes more S3 API calls than Trino.
Another thing is that Trino is usually faster than Hive on simple queries (like the one you mentioned). For complex queries with heavy joins, you will find that Trino is slower, or even fails some times. Please see this blog for the performance comparison:
https://www.datamonad.com/post/2023-05-31-trino-spark-hive-performance-1.7/So, in your experiment, my guess is that Trino is much faster because 1) it uses a more efficient S3 connector, 2) the configuration parameters for S3 are not properly tuned for your S3 environment, and 3) the query is simple. The default configuration parameters for S3 may be far from optimal, so I suggest you experiment with different values (e.g., by decreasing fs.s3a.connection.maximum, fs.s3.maxConnections, fs.s3a.threads.max, fs.s3a.threads.core).
For a simple counting query, Hive is slower, but this does not mean that Hive is always slower. It is a price to pay for choosing the so-called MapReduce architecture to achieve fault tolerance, which requires split computation and so on. If you would like to evaluate Trino vs Hive-MR3, I suggest more complex queries. (David in the MR3 Google group might have some comments because they have been using Hive-MR3-Kubernetes-S3 in production for over a year.)