<?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_options">

  <title>impala-shell Configuration Options</title>
  <titlealts audience="PDF"><navtitle>Configuration Options</navtitle></titlealts>
  <prolog>
    <metadata>
      <data name="Category" value="Impala"/>
      <data name="Category" value="Configuring"/>
      <data name="Category" value="impala-shell"/>
      <data name="Category" value="Data Analysts"/>
      <data name="Category" value="Developers"/>
    </metadata>
  </prolog>

  <conbody>

    <p> You can specify the following options when starting the
        <codeph>impala-shell</codeph> command to change how shell commands are
      executed. The table shows the format to use when specifying each option on
      the command line, or through the <codeph>impala-shell</codeph>
      configuration file. </p>

    <note>
      <p>
        These options are different than the configuration options for the <codeph>impalad</codeph> daemon itself.
        For the <codeph>impalad</codeph> options, see <xref href="impala_config_options.xml#config_options"/>.
      </p>
    </note>

    <p outputclass="toc inpage"/>
  </conbody>

  <concept id="shell_option_summary">

    <title>Summary of impala-shell Configuration Options</title>

    <conbody>

      <p>
        The following table shows the names and allowed arguments for the <cmdname>impala-shell</cmdname>
        configuration options. You can specify options on the command line, or in a configuration file as described
        in <xref href="impala_shell_options.xml#shell_config_file"/>.
      </p>

      <table>
        <tgroup cols="3">
          <colspec colname="1" colwidth="10*"/>
          <colspec colname="2" colwidth="10*"/>
          <colspec colname="3" colwidth="20*"/>
          <thead>
            <row>
              <entry>
                Command-Line Option
              </entry>
              <entry rev="2.0.0">
                Configuration File Setting
              </entry>
              <entry>
                Explanation
              </entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry>
                <p> -B or </p>
                <p>--delimited </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  write_delimited=true
                </p>
              </entry>
              <entry>
                <p>
                  Causes all query results to be printed in plain format as a delimited text file. Useful for
                  producing data files to be used with other Hadoop components. Also useful for avoiding the
                  performance overhead of pretty-printing all output, especially when running benchmark tests using
                  queries returning large result sets. Specify the delimiter character with the
                  <codeph>--output_delimiter</codeph> option. Store all query results in a file rather than
                  printing to the screen with the <codeph>-B</codeph> option. Added in Impala 1.0.1.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p>
                  -b or
                </p>
                <p>
                  --kerberos_host_fqdn
                </p>
              </entry>
              <entry>
                <p>
                  kerberos_host_fqdn=
                </p>
                <p>
                  <varname>load-balancer-hostname</varname>
                </p>
              </entry>
              <entry>
                <p>
                  If set, the setting overrides the expected hostname of the
                  Impala daemon's Kerberos service principal.
                    <cmdname>impala-shell</cmdname> will check that the server's
                  principal matches this hostname. This may be used when
                    <codeph>impalad</codeph> is configured to be accessed via a
                  load-balancer, but it is desired for impala-shell to talk to a
                  specific <codeph>impalad</codeph> directly.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p>
                  --print_header
                </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  print_header=true
                </p>
              </entry>
              <entry>
                <p/>
              </entry>
            </row>
            <row>
              <entry>
                <p> -o <varname>filename</varname> or </p>
                <p>--output_file <varname>filename</varname>
                </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  output_file=<varname>filename</varname>
                </p>
              </entry>
              <entry>
                <p>
                  Stores all query results in the specified file. Typically used to store the results of a single
                  query issued from the command line with the <codeph>-q</codeph> option. Also works for
                  interactive sessions; you see the messages such as number of rows fetched, but not the actual
                  result set. To suppress these incidental messages when combining the <codeph>-q</codeph> and
                  <codeph>-o</codeph> options, redirect <codeph>stderr</codeph> to <codeph>/dev/null</codeph>.
                  Added in Impala 1.0.1.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p>
                  --output_delimiter=<varname>character</varname>
                </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  output_delimiter=<varname>character</varname>
                </p>
              </entry>
              <entry>
                <p>
                  Specifies the character to use as a delimiter between fields when query results are printed in
                  plain format by the <codeph>-B</codeph> option. Defaults to tab (<codeph>'\t'</codeph>). If an
                  output value contains the delimiter character, that field is quoted, escaped by doubling quotation marks, or both. Added in
                  Impala 1.0.1.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p> -p or </p>
                <p>--show_profiles </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  show_profiles=true
                </p>
              </entry>
              <entry>
                <p>
                  Displays the query execution plan (same output as the <codeph>EXPLAIN</codeph> statement) and a
                  more detailed low-level breakdown of execution steps, for every query executed by the shell.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p> -h or </p>
                <p>--help </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  N/A
                </p>
              </entry>
              <entry>
                <p>
                  Displays help information.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p>
                  N/A
                </p>
              </entry>
              <entry rev="2.9.0 IMPALA-5127">
                <p>
                  history_max=1000
                </p>
              </entry>
              <entry>
                <p>
                  Sets the maximum number of queries to store in the history file.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p> -i <varname>hostname</varname> or </p>
                <p>--impalad=<varname>hostname</varname>[:<varname>portnum</varname>] </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  impalad=<varname>hostname</varname>[:<varname>portnum</varname>]
                </p>
              </entry>
              <entry>
                <p>
                  Connects to the <codeph>impalad</codeph> daemon on the specified host. The default port of 21000
                  is assumed unless you provide another value. You can connect to any host in your cluster that is
                  running <codeph>impalad</codeph>. If you connect to an instance of <codeph>impalad</codeph> that
                  was started with an alternate port specified by the <codeph>--fe_port</codeph> flag, provide that
                  alternative port.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p> -q <varname>query</varname> or </p>
                <p>--query=<varname>query</varname>
                </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  query=<varname>query</varname>
                </p>
              </entry>
              <entry>
                <p>
                  Passes a query or other <cmdname>impala-shell</cmdname> command from the command line. The
                  <cmdname>impala-shell</cmdname> interpreter immediately exits after processing the statement. It
                  is limited to a single statement, which could be a <codeph>SELECT</codeph>, <codeph>CREATE
                  TABLE</codeph>, <codeph>SHOW TABLES</codeph>, or any other statement recognized in
                  <codeph>impala-shell</codeph>. Because you cannot pass a <codeph>USE</codeph> statement and
                  another query, fully qualify the names for any tables outside the <codeph>default</codeph>
                  database. (Or use the <codeph>-f</codeph> option to pass a file with a <codeph>USE</codeph>
                  statement followed by other queries.)
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p> -f <varname>query_file</varname> or</p>
                <p> --query_file=<varname>query_file</varname>
                </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  query_file=<varname>path_to_query_file</varname>
                </p>
              </entry>
              <entry>
                <p>
                  Passes a SQL query from a file. Multiple statements must be semicolon (;) delimited.
                  <ph rev="2.3.0">In <keyword keyref="impala23_full"/> and higher, you can specify a filename of <codeph>-</codeph>
                  to represent standard input. This feature makes it convenient to use <cmdname>impala-shell</cmdname>
                  as part of a Unix pipeline where SQL statements are generated dynamically by other tools.</ph>
                </p>
              </entry>
            </row>
            <row rev="2.11.0 IMPALA-5736">
              <entry>
                <p> --query_option=</p>
                <p>"<varname>option</varname>=</p>
                <p><varname>value</varname>" </p>
                <p>-Q "<varname>option</varname>=</p>
                <p><varname>value</varname>" </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                 Header line <codeph>[impala.query_options]</codeph>,
                 followed on subsequent lines by <varname>option</varname>=<varname>value</varname>, one option per line.
                </p>
              </entry>
              <entry>
                <p>
                  Sets default query options for an invocation of the <cmdname>impala-shell</cmdname> command.
                  To set multiple query options at once, use more than one instance of this command-line option.
                  The query option names are not case-sensitive.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p> -k or </p>
                <p>--kerberos </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  use_kerberos=true
                </p>
              </entry>
              <entry>
                <p>
                  Kerberos authentication is used when the shell connects to <codeph>impalad</codeph>. If Kerberos
                  is not enabled on the instance of <codeph>impalad</codeph> to which you are connecting, errors
                  are displayed.
                </p>
                <p>
                  See <keyword keyref="kerberos"/> for the steps to set up and
                  use Kerberos authentication in Impala.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p> -s <varname>kerberos_service_name</varname> or </p>
                <p>--kerberos_service_name=<varname>name</varname>
                </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  kerberos_service_name=<varname>name</varname>
                </p>
              </entry>
              <entry>
                <p>
                  Instructs <codeph>impala-shell</codeph> to authenticate to a particular <codeph>impalad</codeph>
                  service principal. If a <varname>kerberos_service_name</varname> is not specified,
                  <codeph>impala</codeph> is used by default. If this option is used in conjunction with a
                  connection in which Kerberos is not supported, errors are returned.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p> -V or </p>
                <p>--verbose </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  verbose=true
                </p>
              </entry>
              <entry>
                <p>
                  Enables verbose output.
                </p>
              </entry>
            </row>
            <row>
<!-- Confirm verbose=true/false really is the same as verbose vs. quiet. -->
              <entry>
                <p>
                  --quiet
                </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  verbose=false
                </p>
              </entry>
              <entry>
                <p>
                  Disables verbose output.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p> -v or </p>
                <p>--version </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  version=true
                </p>
              </entry>
              <entry>
                <p>
                  Displays version information.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p>
                  -c
                </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  ignore_query_failure=true
                </p>
              </entry>
              <entry>
                <p>
                  Continues on query failure.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                <p> -d <varname>default_db</varname> or </p>
                <p>--database=<varname>default_db</varname>
                </p>
              </entry>
              <entry rev="2.0.0">
                <p>
                  default_db=<varname>default_db</varname>
                </p>
              </entry>
              <entry>
                <p>
                  Specifies the database to be used on startup. Same as running the
                  <codeph><xref href="impala_use.xml#use">USE</xref></codeph> statement after connecting. If not
                  specified, a database named <codeph>DEFAULT</codeph> is used.
                </p>
              </entry>
            </row>
            <row>
              <entry>
                -ssl
              </entry>
              <entry rev="2.0.0">
                ssl=true
              </entry>
              <entry>
                Enables TLS/SSL for <cmdname>impala-shell</cmdname>.
              </entry>
            </row>
            <row>
              <entry>
                --ca_cert=<varname>path_to_certificate</varname>
              </entry>
              <entry rev="2.0.0">
                ca_cert=<varname>path_to_certificate</varname>
              </entry>
              <entry>
                The local pathname pointing to the third-party CA certificate, or to a copy of the server
                certificate for self-signed server certificates. If <codeph>--ca_cert</codeph> is not set,
                <cmdname>impala-shell</cmdname> enables TLS/SSL, but does not validate the server certificate. This is
                useful for connecting to a known-good Impala that is only running over TLS/SSL, when a copy of the
                certificate is not available (such as when debugging customer installations).
              </entry>
            </row>
            <row rev="1.2.2">
              <entry>
                -l
              </entry>
              <entry rev="2.0.0">
                use_ldap=true
              </entry>
              <entry>
                Enables LDAP authentication.
              </entry>
            </row>
            <row rev="1.2.2">
              <entry>
                -u
              </entry>
              <entry rev="2.0.0">
                user=<varname>user_name</varname>
              </entry>
              <entry>
                Supplies the username, when LDAP authentication is enabled by the <codeph>-l</codeph> option.
                (Specify the short username, not the full LDAP distinguished name.) The shell then prompts
                interactively for the password.
              </entry>
            </row>
            <row rev="2.5.0 IMPALA-1934">
              <entry>
                --ldap_password_cmd=<varname>command</varname>
              </entry>
              <entry>
                N/A
              </entry>
              <entry>
                Specifies a command to run to retrieve the LDAP password,
                when LDAP authentication is enabled by the <codeph>-l</codeph> option.
                If the command includes space-separated arguments, enclose the command and
                its arguments in quotation marks.
              </entry>
            </row>
            <row rev="2.0.0">
              <entry>
                --config_file=<varname>path_to_config_file</varname>
              </entry>
              <entry>
                N/A
              </entry>
              <entry> Specifies the path of the file containing
                  <cmdname>impala-shell</cmdname> configuration settings. The
                default is <filepath>/etc/impalarc</filepath>. This setting can
                only be specified on the command line. </entry>
            </row>
            <row rev="2.3.0">
              <entry>--live_progress</entry>
              <entry>N/A</entry>
              <entry>Prints a progress bar showing roughly the percentage complete for each query.
              The information is updated interactively as the query progresses.
              See <xref href="impala_live_progress.xml#live_progress"/>.</entry>
            </row>
            <row rev="2.3.0">
              <entry>--live_summary</entry>
              <entry>N/A</entry>
              <entry>Prints a detailed report, similar to the <codeph>SUMMARY</codeph> command, showing progress details for each phase of query execution.
              The information is updated interactively as the query progresses.
              See <xref href="impala_live_summary.xml#live_summary"/>.</entry>
            </row>
            <row rev="2.5.0 IMPALA-1079">
              <entry>--var=<varname>variable_name</varname>=<varname>value</varname></entry>
              <entry>N/A</entry>
              <entry>
                Defines a substitution variable that can be used within the <cmdname>impala-shell</cmdname> session.
                The variable can be substituted into statements processed by the <codeph>-q</codeph> or <codeph>-f</codeph> options,
                or in an interactive shell session.
                Within a SQL statement, you substitute the value by using the notation <codeph>${var:<varname>variable_name</varname>}</codeph>.
                This feature is available in <keyword keyref="impala25_full"/> and higher.
              </entry>
            </row>
            <row rev="2.3.0 IMPALA-2143">
              <entry>--auth_creds_ok_in_clear</entry>
              <entry>N/A</entry>
              <entry>
                Allows LDAP authentication to be used with an insecure connection to the shell.
                WARNING: This will allow authentication credentials to be sent unencrypted,
                and hence may be vulnerable to an attack.
              </entry>
            </row>
            <row>
              <entry>--protocol=<varname>protocol</varname></entry>
              <entry>N/A</entry>
              <entry>Protocol to use for the connection to Impala. <p>Valid
                    <varname>protocol</varname> values are:<ul>
                    <li><codeph>'hs2'</codeph>: Impala-shell uses the binary TCP
                      based transport to speak to the Impala Daemon via the
                      HiveServer2 protocol.</li>
                    <li><codeph>'hs2-http'</codeph>: Impala-shell uses HTTP
                      transport to speak to the Impala Daemon via the
                      HiveServer2 protocol.</li>
                    <li><codeph>'beeswax'</codeph>: Impala-shell uses the binary
                      TCP based transport to speak to the Impala Daemon via
                      Beeswax. This is the current default setting.</li>
                  </ul></p><p>You cannot connect to the 3.2 or earlier versions
                  of Impala using the <codeph>'hs2'</codeph> or
                    <codeph>'hs2-http'</codeph> option.</p><p>Beeswax support is
                  deprecated and will be removed in the future.</p></entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </conbody>
  </concept>

  <concept id="shell_config_file">

    <title>impala-shell Configuration File</title>

    <conbody>
      <p>You can store a set of default settings for
          <cmdname>impala-shell</cmdname> in the <codeph>impala-shell</codeph>
        configuration file.</p>
      <p>The global <codeph>impala-shell</codeph> configuration file is located
        in <codeph>/etc/impalarc</codeph>.</p>
      <p>The user-level <codeph>impala-shell</codeph> configuration file is
        located in <codeph>~/.impalarc</codeph>.</p>
      <p>Note that the global-level file name is different from the user-level
        file name. The global-level file name does not include a dot
          (<filepath>.</filepath>) in the file name.</p>
      <p>The default path of the global configuration file can be changed by
        setting the <codeph>$IMPALA_SHELL_GLOBAL_CONFIG_FILE</codeph>
        environment variable.</p>
      <p>To specify a different file name or path for the user-level
        configuration file, start <cmdname>impala-shell</cmdname> with the
          <codeph>--config_file</codeph>
        <cmdname>impala-shell</cmdname> option set to the path of the
        configuration file. </p>
      <p>Typically, an administrator creates the global configuration file for
        the <cmdname>impala-shell</cmdname>, and if the user-level configuration
        file exists, the options set in the user configuration file take
        precedence over those in the global configuration file.</p>
      <p>In turn, any options you specify on the <cmdname>impala-shell</cmdname>
        command line override any corresponding options within the configuration
        file. </p>
      <p> The <codeph>impala-shell</codeph> configuration file (global or user)
        configuration file must contain a header label
        <codeph>[impala]</codeph>, followed by the options specific to
          <cmdname>impala-shell</cmdname>.</p>
      <p>The <codeph>impala-shell</codeph> configuration file consists of
        key-value pairs, one option per line. Everything after the
          <codeph>#</codeph> character on a line is treated as a comment and
        ignored. </p>
      <p> The names of the options in the configuration file are similar
        (although not necessarily identical) to the long-form command-line
        arguments to the <cmdname>impala-shell</cmdname> command. For the names
        to use, see <xref href="impala_shell_options.xml#shell_option_summary"
        />. </p>
      <p>You can specify key-value pair options using <codeph>keyval</codeph>,
        similar to the <codeph>--var</codeph> command-line option. For example,
          <codeph>keyval=</codeph><varname>variable1</varname>=<varname>value1</varname>.</p>
      <p>The query options specified in the <codeph>[impala]</codeph> section
        override the options specified in the
          <codeph>[impala.query_options]</codeph> section.</p>
      <p> The following example shows a configuration file that you might use
        during benchmarking tests. It sets verbose mode, so that the output from
        each SQL query is followed by timing information.
          <cmdname>impala-shell</cmdname> starts inside the database containing
        the tables with the benchmark data, avoiding the need to issue a
          <codeph>USE</codeph> statement or use fully qualified table names. </p>
      <p> In this example, the query output is formatted as delimited text
        rather than enclosed in ASCII art boxes, and is stored in a file rather
        than printed to the screen. Those options are appropriate for benchmark
        situations, so that the overhead of <cmdname>impala-shell</cmdname>
        formatting and printing the result set does not factor into the timing
        measurements. It also enables the <codeph>show_profiles</codeph> option.
        That option prints detailed performance information after each query,
        which might be valuable in understanding the performance of benchmark
        queries. </p>
      <codeblock>[impala]
verbose=true
default_db=tpc_benchmarking
write_delimited=true
output_delimiter=,
output_file=/home/tester1/benchmark_results.csv
show_profiles=true
keyval=msg1=hello,keyval=msg2=world</codeblock>
      <p rev="2.11.0 IMPALA-5736"> The following example shows a configuration
        file that connects to a specific remote Impala node, runs a single query
        within a particular database, then exits. Any query options predefined
        under the <codeph>[impala.query_options]</codeph> section in the
        configuration file take effect during the session. </p>
      <p> You would typically use this kind of single-purpose configuration
        setting with the <cmdname>impala-shell</cmdname> command-line option
            <codeph>--config_file=<varname>path_to_config_file</varname></codeph>,
        to easily select between many predefined queries that could be run
        against different databases, hosts, or even different clusters. To run a
        sequence of statements instead of a single query, specify the
        configuration option
            <codeph>query_file=<varname>path_to_query_file</varname></codeph>
        instead. </p>
      <codeblock>[impala]
impalad=impala-test-node1.example.com
default_db=site_stats
# Issue a predefined query and immediately exit.
query=select count(*) from web_traffic where event_date = trunc(now(),'dd')

<ph rev="2.11.0 IMPALA-5736">[impala.query_options]
mem_limit=32g</ph>
</codeblock>
    </conbody>
  </concept>
</concept>
