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();


Reply via email to