...
Info | ||
---|---|---|
| ||
If you'd like to connect via NOSASL mode, you must specify the authentication mode explicitly: % bin/beeline |
Beeline Commands
Command | Description |
---|---|
!<SQLLine command> | List of SQLLine commands available at http://sqlline.sourceforge.net/. Example: |
!delimiter | Set the delimiter for queries written in Beeline. Multi-character delimiters are allowed, but quotation marks, slashes, and -- are not allowed. Defaults to ; Usage: Version: 3.0.0 (HIVE-10865) |
Beeline Hive Commands
Hive specific commands (same as Hive CLI commands) can be run from Beeline, when the Hive JDBC driver is used.
Use ";
" (semicolon) to terminate commands. Comments in scripts can be specified using the "--
" prefix.
Command | Description |
---|---|
reset | Resets the configuration to the default values. |
reset <key> | Resets the value of a particular configuration variable (key) to the default value. |
set <key>=<value> | Sets the value of a particular configuration variable (key). |
set | Prints a list of configuration variables that are overridden by the user or Hive. |
set -v | Prints all Hadoop and Hive configuration variables. |
add FILE[S] <filepath> <filepath>* | Adds one or more files, jars, or archives to the list of resources in the distributed cache. See Hive Resources for more information. |
add FILE[S] <ivyurl> <ivyurl>* add JAR[S] <ivyurl> <ivyurl>* add ARCHIVE[S] <ivyurl> <ivyurl>* | As of Hive 1.2.0, adds one or more files, jars or archives to the list of resources in the distributed cache using an Ivy URL of the form ivy://group:module:version?query_string. See Hive Resources for more information. |
list FILE[S] | Lists the resources already added to the distributed cache. See Hive Resources for more information. (As of Hive 0.14.0: HIVE-7592). |
list FILE[S] <filepath>* | Checks whether the given resources are already added to the distributed cache or not. See Hive Resources for more information. |
delete FILE[S] <filepath>* | Removes the resource(s) from the distributed cache. |
delete FILE[S] <ivyurl> <ivyurl>* delete JAR[S] <ivyurl> <ivyurl>* delete ARCHIVE[S] <ivyurl> <ivyurl>* | As of Hive 1.2.0, removes the resource(s) which were added using the <ivyurl> from the distributed cache. See Hive Resources for more information. |
reload | As of Hive 0.14.0, makes HiveServer2 aware of any jar changes in the path specified by the configuration parameter hive.reloadable.aux.jars.path (without needing to restart HiveServer2). The changes can be adding, removing, or updating jar files. |
dfs <dfs command> | Executes a dfs command. |
<query string> | Executes a Hive query and prints results to standard output. |
Beeline Command Options
The Beeline CLI supports these command line options:
Option | Description |
---|---|
-u <database URL> | The JDBC URL to connect to. Special characters in parameter values should be encoded with URL encoding if needed. Usage: |
-r | Reconnect to last used URL (if a user has previously used Usage: Version: 2.1.0 (HIVE-13670) |
-n <username> | The username to connect as. Usage: |
-p <password> | The password to connect as. Usage: Optional password mode: Starting Hive 2.2.0 (HIVE-13589) the argument for -p option is optional. Usage : beeline -p [valid_password] If the password is not provided after -p Beeline will prompt for the password while initiating the connection. When password is provided Beeline uses it initiate the connection without prompting. |
-d <driver class> | The driver class to use. Usage: |
-e <query> | Query that should be executed. Double or single quotes enclose the query string. This option can be specified multiple times. Usage: Support to run multiple SQL statements separated by semicolons in a single query_string: 1.2.0 (HIVE-9877) |
-f <file> | Script file that should be executed. Usage: Version: 0.12.0 (HIVE-4268) |
-i (or) --init <file or files> | The init files for initialization Usage: Single file: Version: 0.14.0 (HIVE-6561) Multiple files: Version: 2.1.0 (HIVE-11336) |
-w (or) --password-file <password file> | The password file to read password from. Version: 1.2.0 (HIVE-7175) |
-a (or) --authType <auth type> | The authentication type passed to the jdbc as an auth property Version: 0.13.0 (HIVE-5155) |
--property-file <file> | File to read configuration properties from Usage: Version: 2.2.0 (HIVE-13964) |
--hiveconf property=value | Use value for the given configuration property. Properties that are listed in hive.conf.restricted.list cannot be reset with hiveconf (see Restricted List and Whitelist). Usage: Version: 0.13.0 (HIVE-6173) |
--hivevar name=value | Hive variable name and value. This is a Hive-specific setting in which variables can be set at the session level and referenced in Hive commands or queries. Usage: |
--color=[true/false] | Control whether color is used for display. Default is false. Usage: (Not supported for Separated-Value Output formats. See HIVE-9770) |
--showHeader=[true/false] | Show column names in query results (true) or not (false). Default is true. Usage: |
--headerInterval=ROWS | The interval for redisplaying column headers, in number of rows, when outputformat is table. Default is 100. Usage: (Not supported for Separated-Value Output formats. See HIVE-9770) |
--fastConnect=[true/false] | When connecting, skip building a list of all tables and columns for tab-completion of HiveQL statements (true) or build the list (false). Default is true. Usage: |
--autoCommit=[true/false] | Enable/disable automatic transaction commit. Default is false. Usage: |
--verbose=[true/false] | Show verbose error messages and debug information (true) or do not show (false). Default is false. Usage: |
--showWarnings=[true/false] | Display warnings that are reported on the connection after issuing any HiveQL commands. Default is false. Usage: |
--showDbInPrompt=[true/false] | Display the current database name in prompt. Default is false. Usage: Version: 2.2.0 (HIVE-14123) |
--showNestedErrs=[true/false] | Display nested errors. Default is false. Usage: |
--numberFormat=[pattern] | Format numbers using a DecimalFormat pattern. Usage: |
--force=[true/false] | Continue running script even after errors (true) or do not continue (false). Default is false. Usage: |
--maxWidth=MAXWIDTH | The maximum width to display before truncating data, in characters, when outputformat is table. Default is to query the terminal for current width, then fall back to 80. Usage: |
--maxColumnWidth=MAXCOLWIDTH | The maximum column width, in characters, when outputformat is table. Default is 50 in Hive version 2.2.0+ (see HIVE-14135) or 15 in earlier versions. Usage: |
--silent=[true/false] | Reduce the amount of informational messages displayed (true) or not (false). It also stops displaying the log messages for the query from HiveServer2 (Hive 0.14 and later) and the HiveQL commands (Hive 1.2.0 and later). Default is false. Usage: |
--autosave=[true/false] | Automatically save preferences (true) or do not autosave (false). Default is false. Usage: |
--outputformat=[table/vertical/csv/tsv/dsv/csv2/tsv2] | Format mode for result display. Default is table. See |
82903124 below for description of recommended sv options. Usage: Version: dsv/csv2/tsv2 added in 0.14.0 (HIVE-8615) | |
--truncateTable=[true/false] | If true, truncates table column in the console when it exceeds console length. Version: 0.14.0 (HIVE-6928) |
--delimiterForDSV= DELIMITER | The delimiter for delimiter-separated values output format. Default is '|' character. Version: 0.14.0 (HIVE-7390) |
--isolation=LEVEL | Set the transaction isolation level to TRANSACTION_READ_COMMITTED Usage: |
--nullemptystring=[true/false] | Use historic behavior of printing null as empty string (true) or use current behavior of printing null as NULL (false). Default is false. Usage: Version: 0.13.0 (HIVE-4485) |
--incremental=[true/false] | Defaults to |
--incrementalBufferRows=NUMROWS | The number of rows to buffer when printing rows on stdout, defaults to 1000; only applicable if Usage: Version: 2.3.0 (HIVE-14170) |
--maxHistoryRows=NUMROWS | The maximum number of rows to store Beeline history. Version: 2.3.0 (HIVE-15166) |
--delimiter=; | Set the delimiter for queries written in Beeline. Multi-char delimiters are allowed, but quotation marks, slashes, and -- are not allowed. Defaults to ; Usage: Version: 3.0.0 (HIVE-10865) |
--convertBinaryArrayToString=[true/false] | Display binary column data as string or as byte array. Usage: Version: 3.0.0 (HIVE-14786) |
--help | Display a usage message. Usage: |
Output Formats
In Beeline, the result can be displayed in different formats. The format mode can be set with the outputformat
option.
The following output formats are supported:
- table82903124
- vertical82903124
- xmlattr82903124
- xmlelements82903124
- separated-value formats (csv, tsv, csv2, tsv2, dsv)
...
Code Block | ||
---|---|---|
| ||
nohup beeline --silent=true --showHeader=true --outputformat=dsv -f query.hql </dev/null > /tmp/output.log 2> /tmp/error.log & |
JDBC
HiveServer2 has a JDBC driver. It supports both embedded and remote access to HiveServer2. Remote HiveServer2 mode is recommended for production use, as it is more secure and doesn't require direct HDFS/metastore access to be granted for users.
Connection URLs
Connection URL Format
The HiveServer2 URL is a string with the following syntax:
jdbc:hive2://<host1>:<port1>,<host2>:<port2>/dbName;initFile=<file>;sess_var_list?hive_conf_list#hive_var_list
where
<host1>:<port1>,<host2>:<port2>
is a server instance or a comma separated list of server instances to connect to (if dynamic service discovery is enabled). If empty, the embedded server will be used.dbName
is the name of the initial database.- <file> is the path of init script file (Hive 2.2.0 and later). This script file is written with SQL statements which will be executed automatically after connection. This option can be empty.
sess_var_list
is a semicolon separated list of key=value pairs of session variables (e.g.,user=foo;password=bar
).hive_conf_list
is a semicolon separated list of key=value pairs of Hive configuration variables for this sessionhive_var_list
is a semicolon separated list of key=value pairs of Hive variables for this session.
Special characters in sess_var_list, hive_conf_list, hive_var_list
parameter values should be encoded with URL encoding if needed.
Connection URL for Remote or Embedded Mode
The JDBC connection URL format has the prefix jdbc:hive2://
and the Driver class is org.apache.hive.jdbc.HiveDriver
. Note that this is different from the old HiveServer.
- For a remote server, the URL format is
jdbc:hive2://<host>:<port>/<db>;initFile=<file>
(default port for HiveServer2 is 10000). - For an embedded server, the URL format is
jdbc:hive2:///;
(no host or port).initFile=<file>
The initFile
option is available in Hive 2.2.0 and later releases.
Connection URL When HiveServer2 Is Running in HTTP Mode
JDBC connection URL: jdbc:hive2://<host>:<port>/<db>;transportMode=http;httpPath=<http_endpoint>
, where:
...
Fetch size
In order of precedence, the fetch size for beeline is determined using :
- If the beeline user does nothing, each query will use the fetch size received from HS2
- If the beeline user sets the fetchSize in the JDBC connection string, each query will use the fetch size specified there
- If the user wants to set the fetchSize in the session, they can with the syntax: !set fetchSize xxx
- Setting a fetchSize of 0 will direct the driver to use the fetch size provided from HS2
- Setting a fetchSize greater than 0 will set the driver fetch size to the specified value
- Setting a fetchSize of -1 directs beeline to use the default JDBC default behavior: use the connection string fetchSize and, if none is specified, fallback to the fetch size specified by HS2 (this is the default beeline fetchSize value)
- Setting a fetchSize of any other negative integer value is an error
Keeping in mind that whatever the client requests for a fetch size will be overruled on the HiveServer, for every FetchResults request, depending on the configured value for hive.server2.thrift.resultset.max.fetch.size. When a client requests a fetchSize larger than the max, a WARN message is emitted into the HS2 logs for further investigation and to direct clients to adjust their expectations (and configurations).
[1] https://docs.oracle.com/javase/8/docs/api/java/sql/Statement.html#setFetchSize-int-
JDBC
HiveServer2 has a JDBC driver. It supports both embedded and remote access to HiveServer2. Remote HiveServer2 mode is recommended for production use, as it is more secure and doesn't require direct HDFS/metastore access to be granted for users.
Connection URLs
Connection URL Format
The HiveServer2 URL is a string with the following syntax:
jdbc:hive2://<host1>:<port1>,<host2>:<port2>/dbName;initFile=<file>;sess_var_list?hive_conf_list#hive_var_list
where
<host1>:<port1>,<host2>:<port2>
is a server instance or a comma separated list of server instances to connect to (if dynamic service discovery is enabled). If empty, the embedded server will be used.dbName
is the name of the initial database.- <file> is the path of init script file (Hive 2.2.0 and later). This script file is written with SQL statements which will be executed automatically after connection. This option can be empty.
sess_var_list
is a semicolon separated list of key=value pairs of session variables (e.g.,user=foo;password=bar
).hive_conf_list
is a semicolon separated list of key=value pairs of Hive configuration variables for this sessionhive_var_list
is a semicolon separated list of key=value pairs of Hive variables for this session.
Special characters in sess_var_list, hive_conf_list, hive_var_list
parameter values should be encoded with URL encoding if needed.
Connection URL for Remote or Embedded Mode
The JDBC connection URL format has the prefix jdbc:hive2://
and the Driver class is org.apache.hive.jdbc.HiveDriver
. Note that this is different from the old HiveServer.
...
Info | ||
---|---|---|
| ||
In versions earlier than 0.14 these parameters used to be called |
Connection URL When SSL Is Enabled in HiveServer2
JDBC connection URL: jdbc:hive2://<host>:<port>/<db>;ssl=true;sslTrustStore=<trust_store_path>;trustStorePassword=<trust_store_password>
, where:
- <trust_store_path> is the path where client's truststore file lives.
- <trust_store_password> is the password to access the truststore.
...
- For a remote server, the URL format is
jdbc:hive2://<host>:<port>/<db>;
...
initFile=<file>
(default port for HiveServer2 is 10000).- For an embedded server, the URL format is
jdbc:hive2:///;
(no host or port).initFile=<file>
The initFile
option is available in Hive 2.2.0 and later releases.
Connection URL When HiveServer2 Is Running in HTTP Mode
JDBC connection URL: jdbc:hive2://<host>:<port>/<db>;transportMode=http;httpPath=<http_endpoint>
, where:
<http_endpoint>
is the corresponding HTTP endpoint configured in hive-site.xml. Default value iscliservice
.- Default port for HTTP transport mode is 10001.
Anchor HIVE-6972 HIVE-6972
Info | ||
---|---|---|
| ||
In versions earlier than 0.14 these parameters used to be called |
Connection URL When SSL Is Enabled in HiveServer2
...
For versions earlier than 0.14, see the version note above.
Connection URL When ZooKeeper Service Discovery Is Enabled
ZooKeeper-based service discovery introduced in Hive 0.14.0 (HIVE-7935) enables high availability and rolling upgrade for HiveServer2. A JDBC URL that specifies <zookeeper quorum> needs to be used to make use of these features.
With further changes in Hive 2.0.0 and 1.3.0 (unreleased, HIVE-11581), none of the additional configuration parameters such as authentication mode, transport mode, or SSL parameters need to be specified, as they are retrieved from the ZooKeeper entries along with the hostname.
The JDBC connection URL: jdbc:hive2://<zookeeper quorum>/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
.
The <zookeeper quorum> is the same as the value of hive.zookeeper.quorum configuration parameter in hive-site.xml/hivserver2-site.xml used by HiveServer2.
Additional runtime parameters needed for querying can be provided within the URL as follows, by appending it as a ?<option> as before.
The JDBC connection URL: jdbc:hive2://
<zookeeper quorum><host>:<port>/<db>;
serviceDiscoveryModessl=
zooKeeper;zooKeeperNamespace=hiveserver2?tez.queue.name=hive1&hive.server2.thrift.resultset.serialize.in.tasks=true
Named Connection URLs
As of Hive 2.1.0 (HIVE-13670), Beeline now also supports named URL connect strings via usage of environment variables. If you try to do a !connect
to a name that does not look like a URL, then Beeline will attempt to see if there is an environment variable called BEELINE_URL_<name>. For instance, if you specify !connect blue
, it will look for BEELINE_URL_BLUE, and use that to connect. This should make it easier for system administrators to specify environment variables for users, and users need not type in the full URL each time to connect.
Reconnecting
Traditionally, !reconnect
has worked to refresh a connection that has already been established. It is not able to do a fresh connect after !close
has been run. As of Hive 2.1.0 (HIVE-13670), Beeline remembers the last URL successfully connected to in a session, and is able to reconnect even after a !close
has been run. In addition, if a user does a !save
, then this is saved in the beeline.properties file, which then allows !reconnect
to connect to this saved last-connected-to URL across multiple Beeline sessions. This also allows the use of beeline -r
from the command line to do a reconnect on startup.
Using hive-site.xml to automatically connect to HiveServer2
true;sslTrustStore=<trust_store_path>;trustStorePassword=<trust_store_password>
, where:
- <trust_store_path> is the path where client's truststore file lives.
- <trust_store_password> is the password to access the truststore.
In HTTP mode: jdbc:hive2://<host>:<port>/<db>;ssl=true;sslTrustStore=<trust_store_path>;trustStorePassword=<trust_store_password>;transportMode=http;httpPath=<http_endpoint>
.
For versions earlier than 0.14, see the version note above.
Connection URL When ZooKeeper Service Discovery Is Enabled
ZooKeeper-based service discovery introduced in Hive 0.14.0 (HIVE-7935) enables high availability and rolling upgrade for HiveServer2. A JDBC URL that specifies <zookeeper quorum> needs to be used to make use of these features.
With further changes in Hive 2.0.0 and 1.3.0 (unreleased, HIVE-11581), none of the additional configuration parameters such as authentication mode, transport mode, or SSL parameters need to be specified, as they are retrieved from the ZooKeeper entries along with the hostname.
The JDBC connection URL: jdbc:hive2://<zookeeper quorum>/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
.
The <zookeeper quorum> is the same as the value of hive.zookeeper.quorum configuration parameter in hive-site.xml/hivserver2-site.xml used by HiveServer2.
Additional runtime parameters needed for querying can be provided within the URL as follows, by appending it as a ?<option> as before.
The JDBC connection URL: jdbc:hive2://<zookeeper quorum>/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2?tez.queue.name=hive1&hive.server2.thrift.resultset.serialize.in.tasks=true
Named Connection URLs
As of Hive 2.1.0 (HIVE-13670), Beeline now also supports named URL connect strings via usage of environment variables. If you try to do a !connect
to a name that does not look like a URL, then Beeline will attempt to see if there is an environment variable called BEELINE_URL_<name>. For instance, if you specify !connect blue
, it will look for BEELINE_URL_BLUE, and use that to connect. This should make it easier for system administrators to specify environment variables for users, and users need not type in the full URL each time to connect.
Reconnecting
Traditionally, !reconnect
has worked to refresh a connection that has already been established. It is not able to do a fresh connect after !close
has been run. As of Hive 2.1.0 (HIVE-13670), Beeline remembers the last URL successfully connected to in a session, and is able to reconnect even after a !close
has been run. In addition, if a user does a !save
, then this is saved in the beeline.properties file, which then allows !reconnect
to connect to this saved last-connected-to URL across multiple Beeline sessions. This also allows the use of beeline -r
from the command line to do a reconnect on startup.
Using hive-site.xml to automatically connect to HiveServer2
As of Hive 2.2.0 (HIVE-14063), Beeline adds support to use the hive-site.xml As of Hive 2.2.0 (HIVE-14063), Beeline adds support to use the hive-site.xml present in the classpath to automatically generate a connection URL based on the configuration properties in hive-site.xml and an additional user configuration file. Not all the URL properties can be derived from hive-site.xml and hence in order to use this feature user must create a configuration file called “beeline-hs2-connection.xml” which is a Hadoop XML format file. This file is used to provide user-specific connection properties for the connection URL. Beeline looks for this configuration file in ${user.home}/.beeline/ (Unix based OS) or ${user.home}\beeline\ directory (in case of Windows). If the file is not found in the above locations Beeline looks for it in ${HIVE_CONF_DIR} location and /etc/hive/conf (check HIVE-16335 which fixes this location from /etc/conf/hive in Hive 2.2.0) in that order. Once the file is found, Beeline uses beeline-hs2-connection.xml in conjunction with the hive-site.xml in the class path to determine the connection URL.
...
The following table lists the data types implemented for HiveServer2 JDBC.
Hive Type | Java Type | Specification |
---|---|---|
TINYINT | byte | signed or unsigned 1-byte integer |
SMALLINT | short | signed 2-byte integer |
INT | int | signed 4-byte integer |
BIGINT | long | signed 8-byte integer |
FLOAT | double | single-precision number (approximately 7 digits) |
DOUBLE | double | double-precision number (approximately 15 digits) |
DECIMAL | java.math.BigDecimal | fixed-precision decimal value |
BOOLEAN | boolean | a single bit (0 or 1) |
STRING | String | character string or variable-length character string |
TIMESTAMP | java.sql.Timestamp | date and time value |
BINARY | String | binary data |
Complex Types | ||
ARRAY | String – json encoded | values of one data type |
MAP | String – json encoded | key-value pairs |
STRUCT | String – json encoded | structured values |
JDBC Client Setup for a Secure Cluster
...
Code Block | ||
---|---|---|
| ||
static Connection getConnection( Subject signedOnUserSubject ) throws Exception{ Connection conn = (Connection) Subject.doAs(signedOnUserSubject, new PrivilegedExceptionAction<Object>() { public Object run() { Connection con = null; String JDBC_DB_URL = "jdbc:hive2://HiveHost:10000/default;" || "principal=hive/localhost.localdomain@EXAMPLE.COM;" || "kerberosAuthType=fromSubject"; try { Class.forName(JDBC_DRIVER); con = DriverManager.getConnection(JDBC_DB_URL); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } return con; } }); return conn; } |
FetchSize for ResultSets
In the order of precedence, Hive JDBC driver uses the following criteria to determine fetchSize for ResultSet.
- Fetch size is set based on what is received from HS2 (hive.server2.thrift.resultset.default.fetch.size) during the client session open sequence
- Fetch size is set in the JDBC connection string (not well documented: jdbc:hive2://localhost:10000;fetchSize=100)
- Fetch size is set by the application code via JDBC setFetchSize [1]
Keeping in mind that whatever the client requests for a fetch size will be overruled on the HiveServer, for every FetchResults request, depending on the configured value for hive.server2.thrift.resultset.max.fetch.size. When a client requests a fetchSize larger than the max, a WARN message is emitted into the HS2 logs for further investigation and to direct clients to adjust their expectations (and configurations).
[1] https://docs.oracle.com/javase/8/docs/api/java/sql/Statement.html#setFetchSize-int-
Python Client
A Python client driver is available on github. For installation instructions, see Setting Up HiveServer2: Python Client Driver.
...
For versions earlier than 0.14, see the version note above.
Passing HTTP Header Key/Value Pairs via JDBC Driver
...
For versions earlier than 0.14, see the version note above.
Passing Custom HTTP Cookie Key/Value Pairs via JDBC Driver
...