mirror of
https://github.com/apache/impala.git
synced 2026-01-06 06:01:03 -05:00
For history and tracking purposes, there are many instances of rev="CDH-1234" for various CDH- JIRA numbers. This produces no visible output, it's just FYI for the person editing the source. Removing all these now from the upstream doc source, so as not to have "CDH" all through the doc source files. Change-Id: I29089e5a31cd72e876b2ccb8375d1c10693c6aba Reviewed-on: http://gerrit.cloudera.org:8080/6349 Reviewed-by: Ambreen Kazi <ambreen.kazi@cloudera.com> Reviewed-by: John Russell <jrussell@cloudera.com> Tested-by: Impala Public Jenkins
284 lines
12 KiB
XML
284 lines
12 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
-->
|
|
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
|
|
<concept id="shell_running_commands">
|
|
|
|
<title>Running Commands and SQL Statements in impala-shell</title>
|
|
<titlealts audience="PDF"><navtitle>Running Commands and SQL Statements</navtitle></titlealts>
|
|
<prolog>
|
|
<metadata>
|
|
<data name="Category" value="Impala"/>
|
|
<data name="Category" value="impala-shell"/>
|
|
<data name="Category" value="SQL"/>
|
|
<data name="Category" value="Data Analysts"/>
|
|
<data name="Category" value="Developers"/>
|
|
</metadata>
|
|
</prolog>
|
|
|
|
<conbody>
|
|
|
|
<p>
|
|
For information on available commands, see
|
|
<xref href="impala_shell_commands.xml#shell_commands"/>. You can see the full set of available
|
|
commands by pressing TAB twice, for example:
|
|
</p>
|
|
|
|
<codeblock>[impalad-host:21000] >
|
|
connect describe explain help history insert quit refresh select set shell show use version
|
|
[impalad-host:21000] ></codeblock>
|
|
|
|
<note>
|
|
Commands must be terminated by a semi-colon. A command can span multiple lines.
|
|
</note>
|
|
|
|
<p>
|
|
For example:
|
|
</p>
|
|
|
|
<codeblock>[localhost:21000] > select *
|
|
> from t1
|
|
> limit 5;
|
|
+---------+-----------+
|
|
| s1 | s2 |
|
|
+---------+-----------+
|
|
| hello | world |
|
|
| goodbye | cleveland |
|
|
+---------+-----------+
|
|
</codeblock>
|
|
|
|
<p>
|
|
A comment is considered part of the statement it precedes, so when you enter a <codeph>--</codeph> or
|
|
<codeph>/* */</codeph> comment, you get a continuation prompt until you finish entering a statement ending
|
|
with a semicolon:
|
|
</p>
|
|
|
|
<codeblock>[localhost:21000] > -- This is a test comment
|
|
> show tables like 't*';
|
|
+--------+
|
|
| name |
|
|
+--------+
|
|
| t1 |
|
|
| t2 |
|
|
| tab1 |
|
|
| tab2 |
|
|
| tab3 |
|
|
| text_t |
|
|
+--------+
|
|
</codeblock>
|
|
|
|
<p>
|
|
Use the up-arrow and down-arrow keys to cycle through and edit previous commands.
|
|
<cmdname>impala-shell</cmdname> uses the <codeph>readline</codeph> library and so supports a standard set of
|
|
keyboard shortcuts for editing and cursor movement, such as <codeph>Ctrl-A</codeph> for beginning of line and
|
|
<codeph>Ctrl-E</codeph> for end of line.
|
|
</p>
|
|
|
|
<p rev="2.5.0 IMPALA-2179 IMPALA-2180">
|
|
In <keyword keyref="impala25_full"/> and higher, you can define substitution variables to be used within SQL statements
|
|
processed by <cmdname>impala-shell</cmdname>. On the command line, you specify the option
|
|
<codeph>--var=<varname>variable_name</varname>=<varname>value</varname></codeph>.
|
|
Within an interactive session or a script file processed by the <codeph>-f</codeph> option, you specify
|
|
a <codeph>SET</codeph> command using the notation <codeph>SET VAR:<varname>variable_name</varname>=<varname>value</varname></codeph>.
|
|
Within a SQL statement, you substitute the value by using the notation <codeph>${var:<varname>variable_name</varname>}</codeph>.
|
|
</p>
|
|
|
|
<note>
|
|
Because this feature is part of <cmdname>impala-shell</cmdname> rather than the <cmdname>impalad</cmdname>
|
|
backend, make sure the client system you are connecting from has the most recent <cmdname>impala-shell</cmdname>.
|
|
You can use this feature with a new <cmdname>impala-shell</cmdname> connecting to an older <cmdname>impalad</cmdname>,
|
|
but not the reverse.
|
|
</note>
|
|
|
|
<p rev="2.5.0 IMPALA-2179 IMPALA-2180">
|
|
For example, here are some <cmdname>impala-shell</cmdname> commands that define substitution variables and then
|
|
use them in SQL statements executed through the <codeph>-q</codeph> and <codeph>-f</codeph> options.
|
|
Notice how the <codeph>-q</codeph> argument strings are single-quoted to prevent shell expansion of the
|
|
<codeph>${var:value}</codeph> notation, and any string literals within the queries are enclosed by double quotation marks.
|
|
</p>
|
|
|
|
<codeblock rev="2.5.0 IMPALA-2179 IMPALA-2180">
|
|
$ impala-shell --var=tname=table1 --var=colname=x --var=coltype=string -q 'create table ${var:tname} (${var:colname} ${var:coltype}) stored as parquet'
|
|
Starting Impala Shell without Kerberos authentication
|
|
Connected to <varname>hostname</varname>
|
|
Server version: <varname>impalad_version</varname>
|
|
Query: create table table1 (x string) stored as parquet
|
|
|
|
$ NEW_STRING="hello world"
|
|
$ impala-shell --var=tname=table1 --var=insert_val="$NEW_STRING" -q 'insert into ${var:tname} values ("${var:insert_val}")'
|
|
Starting Impala Shell without Kerberos authentication
|
|
Connected to <varname>hostname</varname>
|
|
Server version: <varname>impalad_version</varname>
|
|
Query: insert into table1 values ("hello world")
|
|
Inserted 1 row(s) in 1.40s
|
|
|
|
$ for VAL in foo bar bletch
|
|
do
|
|
impala-shell --var=tname=table1 --var=insert_val="$VAL" -q 'insert into ${var:tname} values ("${var:insert_val}")'
|
|
done
|
|
...
|
|
Query: insert into table1 values ("foo")
|
|
Inserted 1 row(s) in 0.22s
|
|
Query: insert into table1 values ("bar")
|
|
Inserted 1 row(s) in 0.11s
|
|
Query: insert into table1 values ("bletch")
|
|
Inserted 1 row(s) in 0.21s
|
|
|
|
$ echo "Search for what substring?" ; read answer
|
|
Search for what substring?
|
|
b
|
|
$ impala-shell --var=tname=table1 -q 'select x from ${var:tname} where x like "%${var:answer}%"'
|
|
Starting Impala Shell without Kerberos authentication
|
|
Connected to <varname>hostname</varname>
|
|
Server version: <varname>impalad_version</varname>
|
|
Query: select x from table1 where x like "%b%"
|
|
+--------+
|
|
| x |
|
|
+--------+
|
|
| bletch |
|
|
| bar |
|
|
+--------+
|
|
Fetched 2 row(s) in 0.83s
|
|
</codeblock>
|
|
|
|
<p rev="2.5.0 IMPALA-2179 IMPALA-2180">
|
|
Here is a substitution variable passed in by the <codeph>--var</codeph> option,
|
|
and then referenced by statements issued interactively. Then the variable is
|
|
cleared with the <codeph>UNSET</codeph> command, and defined again with the
|
|
<codeph>SET</codeph> command.
|
|
</p>
|
|
|
|
<codeblock rev="2.5.0 IMPALA-2179 IMPALA-2180">
|
|
$ impala-shell --quiet --var=tname=table1
|
|
Starting Impala Shell without Kerberos authentication
|
|
***********************************************************************************
|
|
<varname>banner_message</varname>
|
|
***********************************************************************************
|
|
[<varname>hostname</varname>:21000] > select count(*) from ${var:tname};
|
|
+----------+
|
|
| count(*) |
|
|
+----------+
|
|
| 4 |
|
|
+----------+
|
|
[<varname>hostname</varname>:21000] > unset var:tname;
|
|
Unsetting variable TNAME
|
|
[<varname>hostname</varname>:21000] > select count(*) from ${var:tname};
|
|
Error: Unknown variable TNAME
|
|
[<varname>hostname</varname>:21000] > set var:tname=table1;
|
|
[<varname>hostname</varname>:21000] > select count(*) from ${var:tname};
|
|
+----------+
|
|
| count(*) |
|
|
+----------+
|
|
| 4 |
|
|
+----------+
|
|
</codeblock>
|
|
|
|
<p rev="IMPALA-3397">
|
|
The following example shows how the <codeph>SOURCE</codeph> command can execute
|
|
a series of statements from a file:
|
|
</p>
|
|
|
|
<codeblock rev="IMPALA-3397">
|
|
$ cat commands.sql
|
|
show databases;
|
|
show tables in default;
|
|
show functions in _impala_builtins like '*minute*';
|
|
|
|
$ impala-shell -i localhost
|
|
...
|
|
[localhost:21000] > source commands.sql;
|
|
Query: show databases
|
|
+------------------+----------------------------------------------+
|
|
| name | comment |
|
|
+------------------+----------------------------------------------+
|
|
| _impala_builtins | System database for Impala builtin functions |
|
|
| default | Default Hive database |
|
|
+------------------+----------------------------------------------+
|
|
Fetched 2 row(s) in 0.06s
|
|
Query: show tables in default
|
|
+-----------+
|
|
| name |
|
|
+-----------+
|
|
| customers |
|
|
| sample_07 |
|
|
| sample_08 |
|
|
| web_logs |
|
|
+-----------+
|
|
Fetched 4 row(s) in 0.02s
|
|
Query: show functions in _impala_builtins like '*minute*'
|
|
+-------------+--------------------------------+-------------+---------------+
|
|
| return type | signature | binary type | is persistent |
|
|
+-------------+--------------------------------+-------------+---------------+
|
|
| INT | minute(TIMESTAMP) | BUILTIN | true |
|
|
| TIMESTAMP | minutes_add(TIMESTAMP, BIGINT) | BUILTIN | true |
|
|
| TIMESTAMP | minutes_add(TIMESTAMP, INT) | BUILTIN | true |
|
|
| TIMESTAMP | minutes_sub(TIMESTAMP, BIGINT) | BUILTIN | true |
|
|
| TIMESTAMP | minutes_sub(TIMESTAMP, INT) | BUILTIN | true |
|
|
+-------------+--------------------------------+-------------+---------------+
|
|
Fetched 5 row(s) in 0.03s
|
|
</codeblock>
|
|
|
|
<p rev="IMPALA-3397">
|
|
The following example shows how a file that is run by the <codeph>SOURCE</codeph> command,
|
|
or through the <codeph>-q</codeph> or <codeph>-f</codeph> options of <cmdname>impala-shell</cmdname>,
|
|
can contain additional <codeph>SOURCE</codeph> commands.
|
|
The first file, <filepath>nested1.sql</filepath>, runs an <cmdname>impala-shell</cmdname> command
|
|
and then also runs the commands from <filepath>nested2.sql</filepath>.
|
|
This ability for scripts to call each other is often useful for code that sets up schemas for applications
|
|
or test environments.
|
|
</p>
|
|
|
|
<codeblock rev="IMPALA-3397">
|
|
$ cat nested1.sql
|
|
show functions in _impala_builtins like '*minute*';
|
|
source nested2.sql
|
|
$ cat nested2.sql
|
|
show functions in _impala_builtins like '*hour*'
|
|
|
|
$ impala-shell -i localhost -f nested1.sql
|
|
Starting Impala Shell without Kerberos authentication
|
|
Connected to localhost:21000
|
|
...
|
|
Query: show functions in _impala_builtins like '*minute*'
|
|
+-------------+--------------------------------+-------------+---------------+
|
|
| return type | signature | binary type | is persistent |
|
|
+-------------+--------------------------------+-------------+---------------+
|
|
| INT | minute(TIMESTAMP) | BUILTIN | true |
|
|
| TIMESTAMP | minutes_add(TIMESTAMP, BIGINT) | BUILTIN | true |
|
|
| TIMESTAMP | minutes_add(TIMESTAMP, INT) | BUILTIN | true |
|
|
| TIMESTAMP | minutes_sub(TIMESTAMP, BIGINT) | BUILTIN | true |
|
|
| TIMESTAMP | minutes_sub(TIMESTAMP, INT) | BUILTIN | true |
|
|
+-------------+--------------------------------+-------------+---------------+
|
|
Fetched 5 row(s) in 0.01s
|
|
Query: show functions in _impala_builtins like '*hour*'
|
|
+-------------+------------------------------+-------------+---------------+
|
|
| return type | signature | binary type | is persistent |
|
|
+-------------+------------------------------+-------------+---------------+
|
|
| INT | hour(TIMESTAMP) | BUILTIN | true |
|
|
| TIMESTAMP | hours_add(TIMESTAMP, BIGINT) | BUILTIN | true |
|
|
| TIMESTAMP | hours_add(TIMESTAMP, INT) | BUILTIN | true |
|
|
| TIMESTAMP | hours_sub(TIMESTAMP, BIGINT) | BUILTIN | true |
|
|
| TIMESTAMP | hours_sub(TIMESTAMP, INT) | BUILTIN | true |
|
|
+-------------+------------------------------+-------------+---------------+
|
|
Fetched 5 row(s) in 0.01s
|
|
</codeblock>
|
|
|
|
</conbody>
|
|
</concept>
|