You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by xu...@apache.org on 2014/02/01 04:15:49 UTC

svn commit: r1563369 - in /hive/trunk: beeline/src/java/org/apache/hive/beeline/ beeline/src/main/resources/ itests/hive-unit/src/test/java/org/apache/hive/beeline/ jdbc/src/java/org/apache/hive/jdbc/

Author: xuefu
Date: Sat Feb  1 03:15:47 2014
New Revision: 1563369

URL: http://svn.apache.org/r1563369
Log:
HIVE-6173: Beeline doesn't accept --hiveconf option as Hive CLI does (reviewed by Prasad)

Modified:
    hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLine.java
    hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
    hive/trunk/beeline/src/java/org/apache/hive/beeline/DatabaseConnection.java
    hive/trunk/beeline/src/main/resources/BeeLine.properties
    hive/trunk/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java
    hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java

Modified: hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLine.java
URL: http://svn.apache.org/viewvc/hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLine.java?rev=1563369&r1=1563368&r2=1563369&view=diff
==============================================================================
--- hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLine.java (original)
+++ hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLine.java Sat Feb  1 03:15:47 2014
@@ -126,6 +126,7 @@ public class BeeLine {
   private static final int ERRNO_OTHER = 2;
 
   private static final String HIVE_VAR_PREFIX = "--hivevar";
+  private static final String HIVE_CONF_PREFIX = "--hiveconf";
 
   private final Map<Object, Object> formats = map(new Object[] {
       "vertical", new VerticalOutputFormat(this),
@@ -518,6 +519,16 @@ public class BeeLine {
         continue;
       }
 
+      // Parse hive conf variables
+      if (args[i].equals(HIVE_CONF_PREFIX)) {
+        String[] parts = split(args[++i], "=");
+        if (parts.length != 2) {
+          return false;
+        }
+        getOpts().getHiveConfVariables().put(parts[0], parts[1]);
+        continue;
+      }
+
       // -- arguments are treated as properties
       if (args[i].startsWith("--")) {
         String[] parts = split(args[i].substring(2), "=");

Modified: hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java
URL: http://svn.apache.org/viewvc/hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java?rev=1563369&r1=1563368&r2=1563369&view=diff
==============================================================================
--- hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java (original)
+++ hive/trunk/beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java Sat Feb  1 03:15:47 2014
@@ -88,6 +88,7 @@ class BeeLineOpts implements Completor {
   private String scriptFile = null;
 
   private Map<String, String> hiveVariables = new HashMap<String, String>();
+  private Map<String, String> hiveConfVariables = new HashMap<String, String>();
 
   public BeeLineOpts(BeeLine beeLine, Properties props) {
     this.beeLine = beeLine;
@@ -464,6 +465,13 @@ class BeeLineOpts implements Completor {
     return nullEmptyString ? "" : DEFAULT_NULL_STRING;
   }
 
+  public Map<String, String> getHiveConfVariables() {
+    return hiveConfVariables;
+  }
+
+  public void setHiveConfVariables(Map<String, String> hiveConfVariables) {
+    this.hiveConfVariables = hiveConfVariables;
+  }
 
 }
 

Modified: hive/trunk/beeline/src/java/org/apache/hive/beeline/DatabaseConnection.java
URL: http://svn.apache.org/viewvc/hive/trunk/beeline/src/java/org/apache/hive/beeline/DatabaseConnection.java?rev=1563369&r1=1563368&r2=1563369&view=diff
==============================================================================
--- hive/trunk/beeline/src/java/org/apache/hive/beeline/DatabaseConnection.java (original)
+++ hive/trunk/beeline/src/java/org/apache/hive/beeline/DatabaseConnection.java Sat Feb  1 03:15:47 2014
@@ -42,6 +42,7 @@ class DatabaseConnection {
   private static final String HIVE_AUTH_USER = "user";
   private static final String HIVE_AUTH_PASSWD = "password";
   private static final String HIVE_VAR_PREFIX = "hivevar:";
+  private static final String HIVE_CONF_PREFIX = "hiveconf:";
 
   private final BeeLine beeLine;
   private Connection connection;
@@ -139,6 +140,12 @@ class DatabaseConnection {
     for (Map.Entry<String, String> var : hiveVars.entrySet()) {
       info.put(HIVE_VAR_PREFIX + var.getKey(), var.getValue());
     }
+
+    Map<String, String> hiveConfVars = beeLine.getOpts().getHiveConfVariables();
+    for (Map.Entry<String, String> var : hiveConfVars.entrySet()) {
+      info.put(HIVE_CONF_PREFIX + var.getKey(), var.getValue());
+    }
+
     setConnection(DriverManager.getConnection(getUrl(), info));
     setDatabaseMetaData(getConnection().getMetaData());
 

Modified: hive/trunk/beeline/src/main/resources/BeeLine.properties
URL: http://svn.apache.org/viewvc/hive/trunk/beeline/src/main/resources/BeeLine.properties?rev=1563369&r1=1563368&r2=1563369&view=diff
==============================================================================
--- hive/trunk/beeline/src/main/resources/BeeLine.properties (original)
+++ hive/trunk/beeline/src/main/resources/BeeLine.properties Sat Feb  1 03:15:47 2014
@@ -144,6 +144,7 @@ cmd-usage: Usage: java org.apache.hive.c
 \  -d <driver class>               the driver class to use\n \
 \  -e <query>                      query that should be executed\n \
 \  -f <file>                       script file that should be executed\n \
+\  --hiveconf property=value       Use value for given property\n \
 \  --hivevar name=value            hive variable name and value\n \
 \                                  This is Hive specific settings in which variables\n \
 \                                  can be set at session level and referenced in Hive\n \

Modified: hive/trunk/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java
URL: http://svn.apache.org/viewvc/hive/trunk/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java?rev=1563369&r1=1563368&r2=1563369&view=diff
==============================================================================
--- hive/trunk/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java (original)
+++ hive/trunk/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestBeeLineWithArgs.java Sat Feb  1 03:15:47 2014
@@ -221,9 +221,20 @@ public class TestBeeLineWithArgs {
     testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList);
   }
 
+  @Test
+  public void testBeelineHiveConfVariable() throws Throwable {
+    List<String> argList = getBaseArgs(JDBC_URL);
+    argList.add("--hiveconf");
+    argList.add("hive.table.name=dummy");
+    final String TEST_NAME = "testBeelineHiveConfVariable";
+    final String SCRIPT_TEXT = "create table ${hiveconf:hive.table.name} (d int);\nshow tables;\n";
+    final String EXPECTED_PATTERN = "dummy";
+    testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList);
+  }
+
   /**
    * Test Beeline -hivevar option. User can specify --hivevar name=value on Beeline command line.
-   * This test defines multiple variables using repeated --hivevar flags.
+   * This test defines multiple variables using repeated --hivevar or --hiveconf flags.
    * @throws Throwable
    */
   @Test
@@ -231,13 +242,20 @@ public class TestBeeLineWithArgs {
     List<String> argList = getBaseArgs(JDBC_URL);
     argList.add("--hivevar");
     argList.add("TABLE_NAME=dummy2");
+
+    argList.add("--hiveconf");
+    argList.add("COLUMN_NAME=d");
+
     argList.add("--hivevar");
     argList.add("COMMAND=create");
     argList.add("--hivevar");
     argList.add("OBJECT=table");
 
+    argList.add("--hiveconf");
+    argList.add("COLUMN_TYPE=int");
+
     final String TEST_NAME = "testHiveCommandLineHiveVariable";
-    final String SCRIPT_TEXT = "${COMMAND} ${OBJECT} ${TABLE_NAME} (d int);\nshow tables;\n";
+    final String SCRIPT_TEXT = "${COMMAND} ${OBJECT} ${TABLE_NAME} (${hiveconf:COLUMN_NAME} ${hiveconf:COLUMN_TYPE});\nshow tables;\n";
     final String EXPECTED_PATTERN = "dummy2";
     testScriptFile(TEST_NAME, SCRIPT_TEXT, EXPECTED_PATTERN, true, argList);
   }

Modified: hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java
URL: http://svn.apache.org/viewvc/hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java?rev=1563369&r1=1563368&r2=1563369&view=diff
==============================================================================
--- hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java (original)
+++ hive/trunk/jdbc/src/java/org/apache/hive/jdbc/HiveConnection.java Sat Feb  1 03:15:47 2014
@@ -63,7 +63,6 @@ import org.apache.hive.service.cli.thrif
 import org.apache.http.impl.client.DefaultHttpClient;
 import org.apache.thrift.TException;
 import org.apache.thrift.protocol.TBinaryProtocol;
-import org.apache.thrift.protocol.TProtocol;
 import org.apache.thrift.transport.THttpClient;
 import org.apache.thrift.transport.TTransport;
 import org.apache.thrift.transport.TTransportException;
@@ -85,6 +84,7 @@ public class HiveConnection implements j
   private static final String HIVE_SSL_TRUST_STORE = "sslTrustStore";
   private static final String HIVE_SSL_TRUST_STORE_PASSWORD = "trustStorePassword";
   private static final String HIVE_VAR_PREFIX = "hivevar:";
+  private static final String HIVE_CONF_PREFIX = "hiveconf:";
 
   private final String jdbcURI;
   private final String host;
@@ -124,6 +124,8 @@ public class HiveConnection implements j
         String key = (String) kv.getKey();
         if (key.startsWith(HIVE_VAR_PREFIX)) {
           hiveVarMap.put(key.substring(HIVE_VAR_PREFIX.length()), info.getProperty(key));
+        } else if (key.startsWith(HIVE_CONF_PREFIX)) {
+          hiveConfMap.put(key.substring(HIVE_CONF_PREFIX.length()), info.getProperty(key));
         }
       }
     }