You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by tc...@apache.org on 2019/01/25 06:43:34 UTC
hive git commit: HIVE-21126: Allow session level queries in
LlapBaseInputFormat#getSplits() before actual get_splits() call (Shubham
Chaurasia, reviewed by Teddy Choi)
Repository: hive
Updated Branches:
refs/heads/master 1327d47a5 -> 6fb264e6f
HIVE-21126: Allow session level queries in LlapBaseInputFormat#getSplits() before actual get_splits() call (Shubham Chaurasia, reviewed by Teddy Choi)
Change-Id: I4aa0bf6822ed09c4c4438494a0b7ac2eed378f75
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/6fb264e6
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/6fb264e6
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/6fb264e6
Branch: refs/heads/master
Commit: 6fb264e6ff4e19127fed032638364ab1ecd7b0ec
Parents: 1327d47
Author: Teddy Choi <tc...@hortonworks.com>
Authored: Fri Jan 25 15:43:21 2019 +0900
Committer: Teddy Choi <tc...@hortonworks.com>
Committed: Fri Jan 25 15:43:21 2019 +0900
----------------------------------------------------------------------
.../hadoop/hive/llap/LlapBaseInputFormat.java | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/6fb264e6/llap-ext-client/src/java/org/apache/hadoop/hive/llap/LlapBaseInputFormat.java
----------------------------------------------------------------------
diff --git a/llap-ext-client/src/java/org/apache/hadoop/hive/llap/LlapBaseInputFormat.java b/llap-ext-client/src/java/org/apache/hadoop/hive/llap/LlapBaseInputFormat.java
index ef03be6..30f3720 100644
--- a/llap-ext-client/src/java/org/apache/hadoop/hive/llap/LlapBaseInputFormat.java
+++ b/llap-ext-client/src/java/org/apache/hadoop/hive/llap/LlapBaseInputFormat.java
@@ -37,6 +37,7 @@ import java.util.Random;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.LinkedBlockingQueue;
+import java.util.regex.Pattern;
import org.apache.commons.collections4.ListUtils;
import org.apache.hadoop.hive.conf.HiveConf;
@@ -114,6 +115,8 @@ public class LlapBaseInputFormat<V extends WritableComparable<?>>
public static final String PWD_KEY = "llap.if.pwd";
public static final String HANDLE_ID = "llap.if.handleid";
public static final String DB_KEY = "llap.if.database";
+ public static final String SESSION_QUERIES_FOR_GET_NUM_SPLITS = "llap.session.queries.for.get.num.splits";
+ public static final Pattern SET_QUERY_PATTERN = Pattern.compile("^\\s*set\\s+.*=.+$", Pattern.CASE_INSENSITIVE);
public final String SPLIT_QUERY = "select get_splits(\"%s\",%d)";
public static final LlapServiceInstance[] serviceInstanceArray = new LlapServiceInstance[0];
@@ -259,6 +262,20 @@ public class LlapBaseInputFormat<V extends WritableComparable<?>>
if (database != null && !database.isEmpty()) {
stmt.execute("USE " + database);
}
+ String sessionQueries = job.get(SESSION_QUERIES_FOR_GET_NUM_SPLITS);
+ if (sessionQueries != null && !sessionQueries.trim().isEmpty()) {
+ String[] queries = sessionQueries.trim().split(",");
+ for (String q : queries) {
+ //allow only set queries
+ if (SET_QUERY_PATTERN.matcher(q).matches()) {
+ LOG.debug("Executing session query: {}", q);
+ stmt.execute(q);
+ } else {
+ LOG.warn("Only SET queries are allowed, not executing this query: {}", q);
+ }
+ }
+ }
+
ResultSet res = stmt.executeQuery(sql);
while (res.next()) {
// deserialize split