You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2012/07/03 01:52:45 UTC
svn commit: r1356524 - in /hive/trunk/ql/src/java/org/apache/hadoop/hive/ql:
parse/SemanticAnalyzer.java session/SessionState.java
Author: hashutosh
Date: Mon Jul 2 23:52:44 2012
New Revision: 1356524
URL: http://svn.apache.org/viewvc?rev=1356524&view=rev
Log:
HIVE-3146 : Support external hive tables whose data are stored in Azure blob store/Azure Storage Volumes (ASV) (Kanna Karanam via Ashutosh Chauhan)
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=1356524&r1=1356523&r2=1356524&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Mon Jul 2 23:52:44 2012
@@ -1683,7 +1683,7 @@ public class SemanticAnalyzer extends Ba
SessionState ss = SessionState.get();
String progName = getScriptProgName(cmd);
- if (progName.matches("("+ SessionState.getMatchingSchemaAsRegex() +")://.*")) {
+ if (SessionState.canDownloadResource(progName)) {
String filePath = ss.add_resource(ResourceType.FILE, progName, true);
if (filePath == null) {
throw new RuntimeException("Could not download the resource: " + progName);
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java?rev=1356524&r1=1356523&r2=1356524&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java Mon Jul 2 23:52:44 2012
@@ -590,16 +590,17 @@ public class SessionState {
}
/**
- * Returns the list of filesystem schemas as regex which
- * are permissible for download as a resource.
+ * Returns true if it is from any external File Systems except local
*/
- public static String getMatchingSchemaAsRegex() {
- String[] matchingSchema = {"s3", "s3n", "hdfs"};
- return StringUtils.join(matchingSchema, "|");
+ public static boolean canDownloadResource(String value) {
+ // Allow to download resources from any external FileSystem.
+ // And no need to download if it already exists on local file system.
+ String scheme = new Path(value).toUri().getScheme();
+ return (scheme != null) && !scheme.equalsIgnoreCase("file");
}
private String downloadResource(String value, boolean convertToUnix) {
- if (value.matches("("+ getMatchingSchemaAsRegex() +")://.*")) {
+ if (canDownloadResource(value)) {
getConsole().printInfo("converting to local " + value);
File resourceDir = new File(getConf().getVar(HiveConf.ConfVars.DOWNLOADED_RESOURCES_DIR));
String destinationName = new Path(value).getName();