odraese commented on a change in pull request #690: HIVE-21910: Multiple target 
location generation in HostAffinitySplitLocationProvider
URL: https://github.com/apache/hive/pull/690#discussion_r298304091
 
 

 ##########
 File path: 
ql/src/java/org/apache/hadoop/hive/ql/exec/tez/HostAffinitySplitLocationProvider.java
 ##########
 @@ -72,11 +78,17 @@ public HostAffinitySplitLocationProvider(List<String> 
knownLocations) {
     FileSplit fsplit = (FileSplit) split;
     String splitDesc = "Split at " + fsplit.getPath() + " with offset= " + 
fsplit.getStart()
         + ", length=" + fsplit.getLength();
-    List<String> preferredLocations = preferLocations(fsplit);
-    String location =
-        preferredLocations.get(determineLocation(preferredLocations, 
fsplit.getPath().toString(),
-            fsplit.getStart(), splitDesc));
-    return (location != null) ? new String[] { location } : null;
+    List<String> preferredLocations = new ArrayList<>(preferLocations(fsplit));
+    List<String> finalLocations = new ArrayList<>(numberOfLocations);
+    // Generate new preferred locations until we need more, or we do not have 
any preferred
+    // location left
+    while (finalLocations.size() < numberOfLocations && 
preferredLocations.size() > 0) {
+      String nextLocation = 
preferredLocations.get(determineLocation(preferredLocations,
+          fsplit.getPath().toString(), fsplit.getStart(), splitDesc));
+      finalLocations.add(nextLocation);
+      preferredLocations.remove(nextLocation);
 
 Review comment:
   Something else to consider: let's say that we generate multiple locations 
for each split now, we will run through the determineLocation multiple times 
(vs. once) to generate locations that most likely are not used later down the 
code path. This means that we spend more cycles on TezAM, potentially 
increasing the query execution time there always where the benefits are only 
seen in rejection cases....

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to