You are viewing a plain text version of this content. The canonical link for it is here.
Posted to gitbox@hive.apache.org by GitBox <gi...@apache.org> on 2022/02/17 16:39:07 UTC

[GitHub] [hive] deniskuzZ commented on a change in pull request #3027: HIVE-25947: Compactor job queue cannot be set per table via compactor.mapred.job.queue.name

deniskuzZ commented on a change in pull request #3027:
URL: https://github.com/apache/hive/pull/3027#discussion_r809249306



##########
File path: ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/CompactorUtil.java
##########
@@ -62,31 +75,29 @@ public static ExecutorService createExecutorWithThreadFactory(int parallelism, S
    * @param conf global hive conf
    * @param ci compaction info object
    * @param table instance of table
-   * @return name of the queue, can be null
+   * @return name of the queue
    */
   static String getCompactorJobQueueName(HiveConf conf, CompactionInfo ci, Table table) {
     // Get queue name from the ci. This is passed through
     // ALTER TABLE table_name COMPACT 'major' WITH OVERWRITE TBLPROPERTIES('compactor.hive.compactor.job.queue'='some_queue')
+    List<Function<String, String>> propertyGetters = new ArrayList<>(2);
     if (ci.properties != null) {
       StringableMap ciProperties = new StringableMap(ci.properties);
-      String queueName = ciProperties.get(COMPACTOR_PREFIX + MAPRED_QUEUE_NAME);
-      if (queueName != null && queueName.length() > 0) {
-        return queueName;
-      }
+      propertyGetters.add(ciProperties::get);
     }
-
-    // Get queue name from the table properties
-    String queueName = table.getParameters().get(COMPACTOR_PREFIX + MAPRED_QUEUE_NAME);
-    if (queueName != null && queueName.length() > 0) {
-      return queueName;
+    if (table.getParameters() != null) {
+      propertyGetters.add(table.getParameters()::get);
     }
 
-    // Get queue name from global hive conf
-    queueName = conf.get(HiveConf.ConfVars.COMPACTOR_JOB_QUEUE.varname);
-    if (queueName != null && queueName.length() > 0) {
-      return queueName;
+    for (Function<String, String> getter : propertyGetters) {

Review comment:
       minor, however, it looks like a mix of imperative and declarative styles, I would prefer streaming API here:
   ````
       return propertyGetters.stream()
         .flatMap(getter -> QUEUE_PROPERTIES.stream()
           .filter(p -> !StringUtils.isEmpty(getter.apply(p))))
         .findFirst()
         .orElse(conf.getVar(HiveConf.ConfVars.COMPACTOR_JOB_QUEUE));
   ```` 




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: gitbox-unsubscribe@hive.apache.org
For additional commands, e-mail: gitbox-help@hive.apache.org