1

How do you run beeline on local machine once you've downloaded the jar files?

According to this answer (for Ubuntu), you don't need to do a complete install of Hive to run the beeline CLI. You just need to download the relevant jars.

To determine the files to download for the beeline CLI, I've followed the instructions here, and created a script to run in Git Bash: https://learn.microsoft.com/en-in/azure/hdinsight/hadoop/apache-hadoop-connect-hive-jdbc-driver#connect-with-squirrel-sql-client

#!/bin/bash

# References:
# -----------
#
#   Insert multi-line string into a file
#       https://stackoverflow.com/a/23929367/893766
#
#   Setup ssh programatically
#       https://stackoverflow.com/a/3659691/893766
#       https://superuser.com/a/411991/174619
#       https://www.digitalocean.com/community/questions/new-ssh-key-for-a-new-different-user?answer=38759
#       https://superuser.com/a/1052675/174619
#
#   Relevant files to copy from cluster for hive drivers
#       https://learn.microsoft.com/en-in/azure/hdinsight/hadoop/apache-hadoop-connect-hive-jdbc-driver#connect-with-squirrel-sql-client
#
#   Loop through array of strings
#       https://stackoverflow.com/a/8880633/893766
#
#
# Helpful commands
# ----------------
#
#   Copy and paste into terminal and run to generate removal command
#       echo "ssh hive ${SSH_HOSTNAME} \"sed -i.bak '/${USERNAME}@${HOSTNAME}/d' ~/.ssh/authorized_keys\""


# control variables
echo "------------------------------------------------------------------------"
echo "SETTING CONTROL VARIABLES"
echo
echo "..."
HDINSIGHT_CLUSTER_NAME="<CLUSTERNAME>.azurehdinsight.net"
HDINSIGHT_USER_NAME="sshuser"
SSH_HOST_NAME="hive"
SSH_KEY_PATH=~/.ssh/"${SSH_HOST_NAME}"
LOCAL_HIVE_DIR="/c/ProgramData/hive"
SSH_CONFIG_PATH=~/.ssh/config
SSH_CONFIG="Host ${SSH_HOST_NAME}
   Hostname ${HDINSIGHT_CLUSTER_NAME}
   User ${HDINSIGHT_USER_NAME}
   IdentityFile ${SSH_KEY_PATH}
"
declare -a FILE_GLOBS=(
    "/usr/hdp/current/hadoop-client/hadoop-common.jar"
    "/usr/hdp/current/hadoop-client/hadoop-auth.jar"
    "/usr/hdp/current/hadoop-client/lib/log4j-*.jar"
    "/usr/hdp/current/hadoop-client/lib/slf4j-*.jar"
    "/usr/hdp/current/hive-client/lib/hive-*-1.2*.jar"
    "/usr/hdp/current/hive-client/lib/httpclient-*.jar"
    "/usr/hdp/current/hive-client/lib/httpcore-*.jar"
    "/usr/hdp/current/hive-client/lib/libthrift-*.jar"
    "/usr/hdp/current/hive-client/lib/libfb*.jar"
    "/usr/hdp/current/hive-client/lib/commons-logging-*.jar"
)
echo


# create ssh key for hive access
echo "------------------------------------------------------------------------"
echo "CREATING SSH KEY"
echo 
yes "y" | ssh-keygen -t rsa -N "" -f ${SSH_KEY_PATH}
echo 


# add hive ssh config for easier use in the terminal
echo "------------------------------------------------------------------------"
echo "SETTING SSH CONFIG FOR NEW KEY"
echo
echo -e "${SSH_CONFIG}" | tee ${SSH_CONFIG_PATH}
echo


# copy ssh key to edge node
echo "------------------------------------------------------------------------"
echo "COPYING SSH KEY TO EDGE NODE FOR SECURE PASSWORD-LESS ACCESS"
echo 
ssh-copy-id -i ${SSH_KEY_PATH} $HDINSIGHT_USER_NAME@$HDINSIGHT_CLUSTER_NAME
echo

# create local directory for hive drivers
echo "------------------------------------------------------------------------"
echo "CREATING DIRECTORY FOR HIVE DRIVERS"
echo 
mkdir -p -v ${LOCAL_HIVE_DIR}
echo

# download hive drivers from edge node to local directory
echo "------------------------------------------------------------------------"
echo "DOWNLOADING HIVE DRIVERS TO:"
echo "\t${LOCAL_HIVE_DIR}"
echo 
for glob in "${FILE_GLOBS[@]}"
do
   echo "Processing glob: ${glob}"
   echo -e "\tscp -p ${SSH_HOST_NAME}:${glob} ${LOCAL_HIVE_DIR}"
   scp -p ${SSH_HOST_NAME}:"${glob}" ${LOCAL_HIVE_DIR}
   echo
done
echo


# inform user of ssh usage
echo "------------------------------------------------------------------------"
echo "OUTPUT"
echo -e "
    Command to connect to edge node:
        ssh ${SSH_HOST_NAME}

    Hive drivers installed at:
        ${LOCAL_HIVE_DIR}

    To configure JDBC clients visit:
        https://learn.microsoft.com/en-us/azure/hdinsight/hadoop/apache-hadoop-connect-hive-jdbc-driver

    Use the 'beeline' commandline client for submitting and debugging scripts:
        https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-Beeline%E2%80%93CommandLineShell!quit

    ssh key location:
        ${SSH_KEY_PATH}

    ssh config location:
        ${SSH_CONFIG_PATH}

    view authorised ssh keys on the edge node with the following command:
        ssh ${SSH_HOST_NAME} \"cat ~/.ssh/authorized_keys\"

    you can remove your ssh key from the edge node with the following command:
        ssh ${SSH_HOST_NAME} \"sed -i.bak '/${USERNAME}@${HOSTNAME}/d' ~/.ssh/authorized_keys\"
"
echo 
echo "Driver installation script has finished running"

This downloaded the following files:

$ ls -la /c/ProgramData/hive
total 56204
drwxr-xr-x 1 adria 197609        0 Feb 26 15:01 .
drwxr-xr-x 1 adria 197609        0 Feb 26 16:20 ..
-rw-r--r-- 1 adria 197609    62050 Apr  3  2017 commons-logging-1.1.3.jar
-rw-r--r-- 1 adria 197609    79075 Apr  4  2017 hadoop-auth.jar
-rw-r--r-- 1 adria 197609  3604047 Apr  4  2017 hadoop-common.jar
-rw-r--r-- 1 adria 197609   122837 Apr  4  2017 hive-accumulo-handler-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609    49706 Apr  4  2017 hive-ant-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609   144508 Apr  4  2017 hive-beeline-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609    40077 Apr  4  2017 hive-cli-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609   342718 Apr  4  2017 hive-common-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609   122723 Apr  4  2017 hive-contrib-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609 21703871 Apr  4  2017 hive-exec-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609   118706 Apr  4  2017 hive-hbase-handler-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609    29113 Apr  4  2017 hive-hwi-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609   106388 Apr  4  2017 hive-jdbc-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609 19636098 Apr  4  2017 hive-jdbc-1.2.1000.2.5.4.2-7-standalone.jar
-rw-r--r-- 1 adria 197609  6057211 Apr  4  2017 hive-metastore-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609   924634 Apr  4  2017 hive-serde-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609  1983806 Apr  4  2017 hive-service-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609    32386 Apr  4  2017 hive-shims-0.20S-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609    62039 Apr  4  2017 hive-shims-0.23-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609    10419 Apr  4  2017 hive-shims-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609   112764 Apr  4  2017 hive-shims-common-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609    13562 Apr  4  2017 hive-shims-scheduler-1.2.1000.2.5.4.2-7.jar
-rw-r--r-- 1 adria 197609   719304 Apr  3  2017 httpclient-4.4.jar
-rw-r--r-- 1 adria 197609   321639 Apr  3  2017 httpcore-4.4.jar
-rw-r--r-- 1 adria 197609   313702 Apr  3  2017 libfb303-0.9.3.jar
-rw-r--r-- 1 adria 197609   234201 Apr  3  2017 libthrift-0.9.3.jar
-rw-r--r-- 1 adria 197609   489884 Apr  4  2017 log4j-1.2.17.jar
-rw-r--r-- 1 adria 197609    32119 Apr  4  2017 slf4j-api-1.7.10.jar
-rw-r--r-- 1 adria 197609     8866 Apr  4  2017 slf4j-log4j12-1.7.10.jar

Java info:

$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) Client VM (build 25.161-b12, mixed mode, sharing)

$ which java
/c/ProgramData/Oracle/Java/javapath/java

Now comes the part I have no idea about...

How do you run beeline on local machine once you've downloaded the jar files?

What I've tried

$ cd /c/ProgramData/hive

$ java hive-beeline-1.2.1000.2.5.4.2-7.jar
Error: Could not find or load main class hive-beeline-1.2.1000.2.5.4.2-7.jar

$ java -jar hive-beeline-1.2.1000.2.5.4.2-7.jar
no main manifest attribute, in hive-beeline-1.2.1000.2.5.4.2-7.jar

$ java -cp /c/ProgramData/hive -jar hive-beeline-1.2.1000.2.5.4.2-7.jar
no main manifest attribute, in hive-beeline-1.2.1000.2.5.4.2-7.jar

UPDATE #1

I've uninstalled the JRE 8 and installed JDK 9

$ echo $JAVA_HOME
C:\Program Files\Java\jdk-9.0.4\bin

$ java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)

$ which java
/c/Program Files/Java/jdk-9.0.4/bin/java

$ javac -version
javac 9.0.4

Contents of the beeline jar are as follows:

$ jar tvf hive-beeline-1.2.1000.2.5.4.2-7.jar
     0 Tue Apr 04 12:16:28 AEST 2017 META-INF/
   436 Tue Apr 04 12:16:26 AEST 2017 META-INF/MANIFEST.MF
     0 Tue Apr 04 12:16:26 AEST 2017 org/
     0 Tue Apr 04 12:16:26 AEST 2017 org/apache/
     0 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/
     0 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/
     0 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/util/
  9839 Tue Apr 04 12:16:26 AEST 2017 BeeLine.properties
  1139 Tue Apr 04 12:16:26 AEST 2017 beeline-log4j.properties
   164 Tue Apr 04 12:16:26 AEST 2017 META-INF/NOTICE
 11358 Tue Apr 04 12:16:26 AEST 2017 META-INF/LICENSE
 27286 Tue Apr 04 12:16:26 AEST 2017 META-INF/DEPENDENCIES
  2308 Tue Apr 04 12:16:26 AEST 2017 sql-keywords.properties
  4658 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/Reflector.class
  2767 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/AbstractCommandHandler.class
  1196 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/BeeLineCompleter.class
 38069 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/Commands.class
  5901 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/ColorBuffer.class
  1790 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/XMLElementOutputFormat.class
  1007 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/DatabaseConnection$Schema$Table.class
  2309 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/BeeLineCommandCompleter.class
  1973 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/ReflectiveCommandHandler.class
   264 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/BeeLineOpts$Env.class
  2026 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/Commands$1.class
   894 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/DriverInfo.class
  4785 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/HiveSchemaHelper.class
   181 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/OutputFormat.class
  2382 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/HiveSchemaHelper$OracleCommandParser.class
  1522 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/HiveSchemaHelper$NestedScriptParser$CommandType.class
   669 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/Commands$2.class
  4188 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/SeparatedValuesOutputFormat.class
  2671 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/DatabaseConnection$Schema.class
   902 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/HiveSchemaHelper$NestedScriptParser.class
  2532 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/Rows$Row.class
  1128 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/AbstractOutputFormat.class
  1219 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/BeeLine$1.class
   194 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/BeeLineSignalHandler.class
 17720 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/HiveSchemaTool.class
 16547 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/BeeLineOpts.class
   395 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/BeeLineOpts$Ignore.class
  2490 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/IncrementalRows.class
  3181 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/Rows.class
  2599 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/HiveSchemaHelper$DerbyCommandParser.class
  4112 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/TableOutputFormat.class
  2289 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/DeprecatedSeparatedValuesOutputFormat.class
  1209 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/OutputFile.class
  1075 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/TableNameCompletor.class
  2207 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/util/QFileClient$RegexFilterSet.class
   242 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/util/QFileClient$1.class
  9552 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/util/QFileClient.class
  1059 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/SunSignalHandler.class
  1912 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/XMLAttributeOutputFormat.class
   431 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/BooleanCompleter.class
  1289 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/DatabaseConnection$1.class
  2928 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/HiveSchemaHelper$PostgresCommandParser.class
  1792 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/BeeLine$BeelineParser.class
  4068 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/HiveSchemaHelper$AbstractCommandParser.class
   598 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/ColorBuffer$ColorAttr.class
  2220 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/VerticalOutputFormat.class
  4011 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/SQLCompleter.class
  2279 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/BufferedRows.class
  9246 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/DatabaseConnection.class
  1807 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/DatabaseConnections.class
  2370 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/HiveSchemaHelper$MSSQLCommandParser.class
   873 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/DatabaseConnection$Schema$Table$Column.class
   663 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/BeeLineOpts$1.class
  2195 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/HiveSchemaHelper$AzureDBCommandParser.class
  2792 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/HiveSchemaHelper$MySqlCommandParser.class
  6656 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/ClassNameCompleter.class
 47773 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/BeeLine.class
   467 Tue Apr 04 12:16:26 AEST 2017 org/apache/hive/beeline/CommandHandler.class
     0 Tue Apr 04 12:16:28 AEST 2017 META-INF/maven/
     0 Tue Apr 04 12:16:28 AEST 2017 META-INF/maven/org.apache.hive/
     0 Tue Apr 04 12:16:28 AEST 2017 META-INF/maven/org.apache.hive/hive-beeline/
  5422 Tue Apr 04 12:08:16 AEST 2017 META-INF/maven/org.apache.hive/hive-beeline/pom.xml
   125 Tue Apr 04 12:16:26 AEST 2017 META-INF/maven/org.apache.hive/hive-beeline/pom.properties
Adrian Torrie
  • 2,795
  • 3
  • 40
  • 61

0 Answers0