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