You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by mi...@apache.org on 2018/05/09 21:10:12 UTC
[03/51] [partial] impala git commit: [DOCS] Impala doc site update
for 3.0
http://git-wip-us.apache.org/repos/asf/impala/blob/fae51ec2/docs/build3x/html/topics/impala_show.html
----------------------------------------------------------------------
diff --git a/docs/build3x/html/topics/impala_show.html b/docs/build3x/html/topics/impala_show.html
new file mode 100644
index 0000000..6683296
--- /dev/null
+++ b/docs/build3x/html/topics/impala_show.html
@@ -0,0 +1,1525 @@
+<!DOCTYPE html
+ SYSTEM "about:legacy-compat">
+<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="copyright" content="(C) Copyright 2018"><meta name="DC.rights.owner" content="(C) Copyright 2018"><meta name="DC.Type" content="concept"><meta name="DC.Relation" scheme="URI" content="../topics/impala_langref_sql.html"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="prodname" content="Impala"><meta name="version" content="Impala 3.0.x"><meta name="version" content="Impala 3.0.x"><meta name="version"
content="Impala 3.0.x"><meta name="version" content="Impala 3.0.x"><meta name="version" content="Impala 3.0.x"><meta name="version" content="Impala 3.0.x"><meta name="version" content="Impala 3.0.x"><meta name="version" content="Impala 3.0.x"><meta name="version" content="Impala 3.0.x"><meta name="version" content="Impala 3.0.x"><meta name="version" content="Impala 3.0.x"><meta name="version" content="Impala 3.0.x"><meta name="version" content="Impala 3.0.x"><meta name="version" content="Impala 3.0.x"><meta name="DC.Format" content="XHTML"><meta name="DC.Identifier" content="show"><link rel="stylesheet" type="text/css" href="../commonltr.css"><title>SHOW Statement</title></head><body id="show"><main role="main"><article role="article" aria-labelledby="ariaid-title1">
+
+ <h1 class="title topictitle1" id="ariaid-title1">SHOW Statement</h1>
+
+
+
+ <div class="body conbody">
+
+ <p class="p">
+
+ The <code class="ph codeph">SHOW</code> statement is a flexible way to get information about different types of Impala
+ objects.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Syntax:</strong>
+ </p>
+
+<pre class="pre codeblock"><code>SHOW DATABASES [[LIKE] '<var class="keyword varname">pattern</var>']
+SHOW SCHEMAS [[LIKE] '<var class="keyword varname">pattern</var>'] - an alias for SHOW DATABASES
+SHOW TABLES [IN <var class="keyword varname">database_name</var>] [[LIKE] '<var class="keyword varname">pattern</var>']
+<span class="ph">SHOW [AGGREGATE | ANALYTIC] FUNCTIONS [IN <var class="keyword varname">database_name</var>] [[LIKE] '<var class="keyword varname">pattern</var>']</span>
+<span class="ph">SHOW CREATE TABLE [<var class="keyword varname">database_name</var>].<var class="keyword varname">table_name</var></span>
+<span class="ph">SHOW TABLE STATS [<var class="keyword varname">database_name</var>.]<var class="keyword varname">table_name</var></span>
+<span class="ph">SHOW COLUMN STATS [<var class="keyword varname">database_name</var>.]<var class="keyword varname">table_name</var></span>
+<span class="ph">SHOW PARTITIONS [<var class="keyword varname">database_name</var>.]<var class="keyword varname">table_name</var></span>
+<span class="ph">SHOW <span class="ph">[RANGE]</span> PARTITIONS [<var class="keyword varname">database_name</var>.]<var class="keyword varname">table_name</var></span>
+SHOW FILES IN [<var class="keyword varname">database_name</var>.]<var class="keyword varname">table_name</var> <span class="ph">[PARTITION (<var class="keyword varname">key_col_expression</var> [, <var class="keyword varname">key_col_expression</var>]</span>]
+
+<span class="ph">SHOW ROLES
+SHOW CURRENT ROLES
+SHOW ROLE GRANT GROUP <var class="keyword varname">group_name</var>
+SHOW GRANT ROLE <var class="keyword varname">role_name</var></span>
+</code></pre>
+
+
+
+
+
+
+
+ <p class="p">
+ Issue a <code class="ph codeph">SHOW <var class="keyword varname">object_type</var></code> statement to see the appropriate objects in the
+ current database, or <code class="ph codeph">SHOW <var class="keyword varname">object_type</var> IN <var class="keyword varname">database_name</var></code>
+ to see objects in a specific database.
+ </p>
+
+ <p class="p">
+ The optional <var class="keyword varname">pattern</var> argument is a quoted string literal, using Unix-style
+ <code class="ph codeph">*</code> wildcards and allowing <code class="ph codeph">|</code> for alternation. The preceding
+ <code class="ph codeph">LIKE</code> keyword is also optional. All object names are stored in lowercase, so use all
+ lowercase letters in the pattern string. For example:
+ </p>
+
+<pre class="pre codeblock"><code>show databases 'a*';
+show databases like 'a*';
+show tables in some_db like '*fact*';
+use some_db;
+show tables '*dim*|*fact*';</code></pre>
+
+ <p class="p">
+ <strong class="ph b">Cancellation:</strong> Cannot be cancelled.
+ </p>
+
+ <p class="p toc inpage"></p>
+
+ </div>
+
+ <nav role="navigation" class="related-links"><div class="familylinks"><div class="parentlink"><strong>Parent topic:</strong> <a class="link" href="../topics/impala_langref_sql.html">Impala SQL Statements</a></div></div></nav><article class="topic concept nested1" aria-labelledby="ariaid-title2" id="show__show_files">
+
+ <h2 class="title topictitle2" id="ariaid-title2">SHOW FILES Statement</h2>
+
+
+ <div class="body conbody">
+
+ <p class="p">
+ The <code class="ph codeph">SHOW FILES</code> statement displays the files that constitute a specified table,
+ or a partition within a partitioned table. This syntax is available in <span class="keyword">Impala 2.2</span> and higher
+ only. The output includes the names of the files, the size of each file, and the applicable partition
+ for a partitioned table. The size includes a suffix of <code class="ph codeph">B</code> for bytes,
+ <code class="ph codeph">MB</code> for megabytes, and <code class="ph codeph">GB</code> for gigabytes.
+ </p>
+
+ <div class="p">
+ In <span class="keyword">Impala 2.8</span> and higher, you can use general
+ expressions with operators such as <code class="ph codeph"><</code>, <code class="ph codeph">IN</code>,
+ <code class="ph codeph">LIKE</code>, and <code class="ph codeph">BETWEEN</code> in the <code class="ph codeph">PARTITION</code>
+ clause, instead of only equality operators. For example:
+<pre class="pre codeblock"><code>
+show files in sample_table partition (j < 5);
+show files in sample_table partition (k = 3, l between 1 and 10);
+show files in sample_table partition (month like 'J%');
+
+</code></pre>
+ </div>
+
+ <div class="note note note_note"><span class="note__title notetitle">Note:</span>
+ This statement applies to tables and partitions stored on HDFS, or in the Amazon Simple Storage System (S3).
+ It does not apply to views.
+ It does not apply to tables mapped onto HBase <span class="ph">or Kudu</span>,
+ because those data management systems do not use the same file-based storage layout.
+ </div>
+
+ <p class="p">
+ <strong class="ph b">Usage notes:</strong>
+ </p>
+
+ <p class="p">
+ You can use this statement to verify the results of your ETL process: that is, that
+ the expected files are present, with the expected sizes. You can examine the file information
+ to detect conditions such as empty files, missing files, or inefficient layouts due to
+ a large number of small files. When you use <code class="ph codeph">INSERT</code> statements to copy
+ from one table to another, you can see how the file layout changes due to file format
+ conversions, compaction of small input files into large data blocks, and
+ multiple output files from parallel queries and partitioned inserts.
+ </p>
+
+ <p class="p">
+ The output from this statement does not include files that Impala considers to be hidden
+ or invisible, such as those whose names start with a dot or an underscore, or that
+ end with the suffixes <code class="ph codeph">.copying</code> or <code class="ph codeph">.tmp</code>.
+ </p>
+
+ <p class="p">
+ The information for partitioned tables complements the output of the <code class="ph codeph">SHOW PARTITIONS</code>
+ statement, which summarizes information about each partition. <code class="ph codeph">SHOW PARTITIONS</code>
+ produces some output for each partition, while <code class="ph codeph">SHOW FILES</code> does not
+ produce any output for empty partitions because they do not include any data files.
+ </p>
+
+
+ <p class="p">
+ <strong class="ph b">HDFS permissions:</strong>
+ </p>
+ <p class="p">
+ The user ID that the <span class="keyword cmdname">impalad</span> daemon runs under,
+ typically the <code class="ph codeph">impala</code> user, must have read
+ permission for all the table files, read and execute permission for all the directories that make up the table,
+ and execute permission for the database directory and all its parent directories.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Examples:</strong>
+ </p>
+
+ <p class="p">
+ The following example shows a <code class="ph codeph">SHOW FILES</code> statement
+ for an unpartitioned table using text format:
+ </p>
+
+<pre class="pre codeblock"><code>[localhost:21000] > create table unpart_text (x bigint, s string);
+[localhost:21000] > insert into unpart_text (x, s) select id, name
+ > from oreilly.sample_data limit 20e6;
+[localhost:21000] > show files in unpart_text;
++------------------------------------------------------------------------------+----------+-----------+
+| path | size | partition |
++------------------------------------------------------------------------------+----------+-----------+
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_text/35665776ef85cfaf_1012432410_data.0. | 448.31MB | |
++------------------------------------------------------------------------------+----------+-----------+
+[localhost:21000] > insert into unpart_text (x, s) select id, name from oreilly.sample_data limit 100e6;
+[localhost:21000] > show files in unpart_text;
++--------------------------------------------------------------------------------------+----------+-----------+
+| path | size | partition |
++--------------------------------------------------------------------------------------+----------+-----------+
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_text/35665776ef85cfaf_1012432410_data.0. | 448.31MB | |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_text/ac3dba252a8952b8_1663177415_data.0. | 2.19GB | |
++--------------------------------------------------------------------------------------+----------+-----------+
+</code></pre>
+
+ <p class="p">
+ This example illustrates how, after issuing some <code class="ph codeph">INSERT ... VALUES</code> statements,
+ the table now contains some tiny files of just a few bytes. Such small files could cause inefficient processing of
+ parallel queries that are expecting multi-megabyte input files. The example shows how you might compact the small files by doing
+ an <code class="ph codeph">INSERT ... SELECT</code> into a different table, possibly converting the data to Parquet in the process:
+ </p>
+
+<pre class="pre codeblock"><code>[localhost:21000] > insert into unpart_text values (10,'hello'), (20, 'world');
+[localhost:21000] > insert into unpart_text values (-1,'foo'), (-1000, 'bar');
+[localhost:21000] > show files in unpart_text;
++--------------------------------------------------------------------------------------+----------+
+| path | size |
++--------------------------------------------------------------------------------------+----------+
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_text/4f11b8bdf8b6aa92_238145083_data.0. | 18B
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_text/35665776ef85cfaf_1012432410_data.0. | 448.31MB
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_text/ac3dba252a8952b8_1663177415_data.0. | 2.19GB
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_text/cfb8252452445682_1868457216_data.0. | 17B
++--------------------------------------------------------------------------------------+----------+
+[localhost:21000] > create table unpart_parq stored as parquet as select * from unpart_text;
++---------------------------+
+| summary |
++---------------------------+
+| Inserted 120000002 row(s) |
++---------------------------+
+[localhost:21000] > show files in unpart_parq;
++------------------------------------------------------------------------------------------+----------+
+| path | size |
++------------------------------------------------------------------------------------------+----------+
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_parq/60798d96ba630184_549959007_data.0.parq | 255.36MB |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_parq/60798d96ba630184_549959007_data.1.parq | 178.52MB |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_parq/60798d96ba630185_549959007_data.0.parq | 255.37MB |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_parq/60798d96ba630185_549959007_data.1.parq | 57.71MB |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_parq/60798d96ba630186_2141167244_data.0.parq | 255.40MB |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_parq/60798d96ba630186_2141167244_data.1.parq | 175.52MB |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_parq/60798d96ba630187_1006832086_data.0.parq | 255.40MB |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/unpart_parq/60798d96ba630187_1006832086_data.1.parq | 214.61MB |
++------------------------------------------------------------------------------------------+----------+
+</code></pre>
+
+ <p class="p">
+ The following example shows a <code class="ph codeph">SHOW FILES</code> statement for a partitioned text table
+ with data in two different partitions, and two empty partitions.
+ The partitions with no data are not represented in the <code class="ph codeph">SHOW FILES</code> output.
+ </p>
+<pre class="pre codeblock"><code>[localhost:21000] > create table part_text (x bigint, y int, s string)
+ > partitioned by (year bigint, month bigint, day bigint);
+[localhost:21000] > insert overwrite part_text (x, y, s) partition (year=2014,month=1,day=1)
+ > select id, val, name from oreilly.normalized_parquet
+where id between 1 and 1000000;
+[localhost:21000] > insert overwrite part_text (x, y, s) partition (year=2014,month=1,day=2)
+ > select id, val, name from oreilly.normalized_parquet
+ > where id between 1000001 and 2000000;
+[localhost:21000] > alter table part_text add partition (year=2014,month=1,day=3);
+[localhost:21000] > alter table part_text add partition (year=2014,month=1,day=4);
+[localhost:21000] > show partitions part_text;
++-------+-------+-----+-------+--------+---------+--------------+-------------------+--------+-------------------+
+| year | month | day | #Rows | #Files | Size | Bytes Cached | Cache Replication | Format | Incremental stats |
++-------+-------+-----+-------+--------+---------+--------------+-------------------+--------+-------------------+
+| 2014 | 1 | 1 | -1 | 4 | 25.16MB | NOT CACHED | NOT CACHED | TEXT | false |
+| 2014 | 1 | 2 | -1 | 4 | 26.22MB | NOT CACHED | NOT CACHED | TEXT | false |
+| 2014 | 1 | 3 | -1 | 0 | 0B | NOT CACHED | NOT CACHED | TEXT | false |
+| 2014 | 1 | 4 | -1 | 0 | 0B | NOT CACHED | NOT CACHED | TEXT | false |
+| Total | | | -1 | 8 | 51.38MB | 0B | | | |
++-------+-------+-----+-------+--------+---------+--------------+-------------------+--------+-------------------+
+[localhost:21000] > show files in part_text;
++---------------------------------------------------------------------------------------------------------+--------+-------------------------+
+| path | size | partition |
++---------------------------------------------------------------------------------------------------------+--------+-------------------------+
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_text/year=2014/month=1/day=1/80732d9dc80689f_1418645991_data.0. | 5.77MB | year=2014/month=1/day=1 |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_text/year=2014/month=1/day=1/80732d9dc8068a0_1418645991_data.0. | 6.25MB | year=2014/month=1/day=1 |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_text/year=2014/month=1/day=1/80732d9dc8068a1_147082319_data.0. | 7.16MB | year=2014/month=1/day=1 |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_text/year=2014/month=1/day=1/80732d9dc8068a2_2111411753_data.0. | 5.98MB | year=2014/month=1/day=1 |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_text/year=2014/month=1/day=2/21a828cf494b5bbb_501271652_data.0. | 6.42MB | year=2014/month=1/day=2 |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_text/year=2014/month=1/day=2/21a828cf494b5bbc_501271652_data.0. | 6.62MB | year=2014/month=1/day=2 |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_text/year=2014/month=1/day=2/21a828cf494b5bbd_1393490200_data.0. | 6.98MB | year=2014/month=1/day=2 |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_text/year=2014/month=1/day=2/21a828cf494b5bbe_1393490200_data.0. | 6.20MB | year=2014/month=1/day=2 |
++---------------------------------------------------------------------------------------------------------+--------+-------------------------+
+</code></pre>
+ <p class="p">
+ The following example shows a <code class="ph codeph">SHOW FILES</code> statement for a partitioned Parquet table.
+ The number and sizes of files are different from the equivalent partitioned text table
+ used in the previous example, because <code class="ph codeph">INSERT</code> operations for Parquet tables
+ are parallelized differently than for text tables. (Also, the amount of data is so small
+ that it can be written to Parquet without involving all the hosts in this 4-node cluster.)
+ </p>
+<pre class="pre codeblock"><code>[localhost:21000] > create table part_parq (x bigint, y int, s string) partitioned by (year bigint, month bigint, day bigint) stored as parquet;
+[localhost:21000] > insert into part_parq partition (year,month,day) select x, y, s, year, month, day from partitioned_text;
+[localhost:21000] > show partitions part_parq;
++-------+-------+-----+-------+--------+---------+--------------+-------------------+---------+-------------------+
+| year | month | day | #Rows | #Files | Size | Bytes Cached | Cache Replication | Format | Incremental stats |
++-------+-------+-----+-------+--------+---------+--------------+-------------------+---------+-------------------+
+| 2014 | 1 | 1 | -1 | 3 | 17.89MB | NOT CACHED | NOT CACHED | PARQUET | false |
+| 2014 | 1 | 2 | -1 | 3 | 17.89MB | NOT CACHED | NOT CACHED | PARQUET | false |
+| Total | | | -1 | 6 | 35.79MB | 0B | | | |
++-------+-------+-----+-------+--------+---------+--------------+-------------------+---------+-------------------+
+[localhost:21000] > show files in part_parq;
++-----------------------------------------------------------------------------------------------+--------+-------------------------+
+| path | size | partition |
++-----------------------------------------------------------------------------------------------+--------+-------------------------+
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_parq/year=2014/month=1/day=1/1134113650_data.0.parq | 4.49MB | year=2014/month=1/day=1 |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_parq/year=2014/month=1/day=1/617567880_data.0.parq | 5.14MB | year=2014/month=1/day=1 |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_parq/year=2014/month=1/day=1/2099499416_data.0.parq | 8.27MB | year=2014/month=1/day=1 |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_parq/year=2014/month=1/day=2/945567189_data.0.parq | 8.80MB | year=2014/month=1/day=2 |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_parq/year=2014/month=1/day=2/2145850112_data.0.parq | 4.80MB | year=2014/month=1/day=2 |
+| hdfs://<var class="keyword varname">impala_data_dir</var>/show_files.db/part_parq/year=2014/month=1/day=2/665613448_data.0.parq | 4.29MB | year=2014/month=1/day=2 |
++-----------------------------------------------------------------------------------------------+--------+-------------------------+
+</code></pre>
+<p class="p">
+ The following example shows output from the <code class="ph codeph">SHOW FILES</code> statement
+ for a table where the data files are stored in Amazon S3:
+</p>
+<pre class="pre codeblock"><code>[localhost:21000] > show files in s3_testing.sample_data_s3;
++-----------------------------------------------------------------------+---------+
+| path | size |
++-----------------------------------------------------------------------+---------+
+| s3a://impala-demo/sample_data/e065453cba1988a6_1733868553_data.0.parq | 24.84MB |
++-----------------------------------------------------------------------+---------+
+</code></pre>
+
+ </div>
+ </article>
+
+ <article class="topic concept nested1" aria-labelledby="ariaid-title3" id="show__show_roles">
+
+ <h2 class="title topictitle2" id="ariaid-title3">SHOW ROLES Statement</h2>
+
+
+ <div class="body conbody">
+
+ <p class="p">
+ The <code class="ph codeph">SHOW ROLES</code> statement displays roles. This syntax is available in <span class="keyword">Impala 2.0</span> and later
+ only, when you are using the Sentry authorization framework along with the Sentry service, as described in
+ <a class="xref" href="impala_authorization.html#sentry_service">Using Impala with the Sentry Service (Impala 1.4 or higher only)</a>. It does not apply when you use the Sentry framework
+ with privileges defined in a policy file.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Security considerations:</strong>
+ </p>
+
+ <p class="p">
+ When authorization is enabled, the output of the <code class="ph codeph">SHOW</code> statement is limited to those
+ objects for which you have some privilege. There might be other database, tables, and so on, but their
+ names are concealed. If you believe an object exists but you cannot see it in the <code class="ph codeph">SHOW</code>
+ output, check with the system administrator if you need to be granted a new privilege for that object. See
+ <a class="xref" href="../shared/../topics/impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a> for how to set up authorization and add
+ privileges for specific kinds of objects.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Examples:</strong>
+ </p>
+
+ <p class="p">
+ Depending on the roles set up within your organization by the <code class="ph codeph">CREATE ROLE</code> statement, the
+ output might look something like this:
+ </p>
+
+<pre class="pre codeblock"><code>show roles;
++-----------+
+| role_name |
++-----------+
+| analyst |
+| role1 |
+| sales |
+| superuser |
+| test_role |
++-----------+
+</code></pre>
+
+ <p class="p">
+ <strong class="ph b">HDFS permissions:</strong> This statement does not touch any HDFS files or directories,
+ therefore no HDFS permissions are required.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Related information:</strong>
+ </p>
+
+ <p class="p">
+ <a class="xref" href="impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a>
+ </p>
+ </div>
+ </article>
+
+ <article class="topic concept nested1" aria-labelledby="ariaid-title4" id="show__show_current_role">
+
+ <h2 class="title topictitle2" id="ariaid-title4">SHOW CURRENT ROLE</h2>
+
+
+ <div class="body conbody">
+
+ <p class="p">
+ The <code class="ph codeph">SHOW CURRENT ROLE</code> statement displays roles assigned to the current user. This syntax
+ is available in <span class="keyword">Impala 2.0</span> and later only, when you are using the Sentry authorization framework along with
+ the Sentry service, as described in <a class="xref" href="impala_authorization.html#sentry_service">Using Impala with the Sentry Service (Impala 1.4 or higher only)</a>. It does not
+ apply when you use the Sentry framework with privileges defined in a policy file.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Security considerations:</strong>
+ </p>
+
+ <p class="p">
+ When authorization is enabled, the output of the <code class="ph codeph">SHOW</code> statement is limited to those
+ objects for which you have some privilege. There might be other database, tables, and so on, but their
+ names are concealed. If you believe an object exists but you cannot see it in the <code class="ph codeph">SHOW</code>
+ output, check with the system administrator if you need to be granted a new privilege for that object. See
+ <a class="xref" href="../shared/../topics/impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a> for how to set up authorization and add
+ privileges for specific kinds of objects.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Examples:</strong>
+ </p>
+
+ <p class="p">
+ Depending on the roles set up within your organization by the <code class="ph codeph">CREATE ROLE</code> statement, the
+ output might look something like this:
+ </p>
+
+<pre class="pre codeblock"><code>show current roles;
++-----------+
+| role_name |
++-----------+
+| role1 |
+| superuser |
++-----------+
+</code></pre>
+
+ <p class="p">
+ <strong class="ph b">HDFS permissions:</strong> This statement does not touch any HDFS files or directories,
+ therefore no HDFS permissions are required.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Related information:</strong>
+ </p>
+
+ <p class="p">
+ <a class="xref" href="impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a>
+ </p>
+ </div>
+ </article>
+
+ <article class="topic concept nested1" aria-labelledby="ariaid-title5" id="show__show_role_grant">
+
+ <h2 class="title topictitle2" id="ariaid-title5">SHOW ROLE GRANT Statement</h2>
+
+
+
+ <div class="body conbody">
+
+ <p class="p">
+
+ The <code class="ph codeph">SHOW ROLE GRANT</code> statement lists all the roles assigned to the specified group. This
+ statement is only allowed for Sentry administrative users and others users that are part of the specified
+ group. This syntax is available in <span class="keyword">Impala 2.0</span> and later only, when you are using the Sentry authorization
+ framework along with the Sentry service, as described in
+ <a class="xref" href="impala_authorization.html#sentry_service">Using Impala with the Sentry Service (Impala 1.4 or higher only)</a>. It does not apply when you use the Sentry framework
+ with privileges defined in a policy file.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Security considerations:</strong>
+ </p>
+
+ <p class="p">
+ When authorization is enabled, the output of the <code class="ph codeph">SHOW</code> statement is limited to those
+ objects for which you have some privilege. There might be other database, tables, and so on, but their
+ names are concealed. If you believe an object exists but you cannot see it in the <code class="ph codeph">SHOW</code>
+ output, check with the system administrator if you need to be granted a new privilege for that object. See
+ <a class="xref" href="../shared/../topics/impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a> for how to set up authorization and add
+ privileges for specific kinds of objects.
+ </p>
+
+
+
+ <p class="p">
+ <strong class="ph b">HDFS permissions:</strong> This statement does not touch any HDFS files or directories,
+ therefore no HDFS permissions are required.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Related information:</strong>
+ </p>
+
+ <p class="p">
+ <a class="xref" href="impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a>
+ </p>
+ </div>
+ </article>
+
+ <article class="topic concept nested1" aria-labelledby="ariaid-title6" id="show__show_grant_role">
+
+ <h2 class="title topictitle2" id="ariaid-title6">SHOW GRANT ROLE Statement</h2>
+
+
+
+ <div class="body conbody">
+
+ <p class="p">
+
+ The <code class="ph codeph">SHOW GRANT ROLE</code> statement list all the grants for the given role name. This statement
+ is only allowed for Sentry administrative users and other users that have been granted the specified role.
+ This syntax is available in <span class="keyword">Impala 2.0</span> and later only, when you are using the Sentry authorization framework
+ along with the Sentry service, as described in <a class="xref" href="impala_authorization.html#sentry_service">Using Impala with the Sentry Service (Impala 1.4 or higher only)</a>. It
+ does not apply when you use the Sentry framework with privileges defined in a policy file.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Security considerations:</strong>
+ </p>
+
+ <p class="p">
+ When authorization is enabled, the output of the <code class="ph codeph">SHOW</code> statement is limited to those
+ objects for which you have some privilege. There might be other database, tables, and so on, but their
+ names are concealed. If you believe an object exists but you cannot see it in the <code class="ph codeph">SHOW</code>
+ output, check with the system administrator if you need to be granted a new privilege for that object. See
+ <a class="xref" href="../shared/../topics/impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a> for how to set up authorization and add
+ privileges for specific kinds of objects.
+ </p>
+
+
+
+ <p class="p">
+ <strong class="ph b">HDFS permissions:</strong> This statement does not touch any HDFS files or directories,
+ therefore no HDFS permissions are required.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Related information:</strong>
+ </p>
+
+ <p class="p">
+ <a class="xref" href="impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a>
+ </p>
+ </div>
+ </article>
+
+ <article class="topic concept nested1" aria-labelledby="ariaid-title7" id="show__show_databases">
+
+ <h2 class="title topictitle2" id="ariaid-title7">SHOW DATABASES</h2>
+
+
+ <div class="body conbody">
+
+ <p class="p">
+ The <code class="ph codeph">SHOW DATABASES</code> statement is often the first one you issue when connecting to an
+ instance for the first time. You typically issue <code class="ph codeph">SHOW DATABASES</code> to see the names you can
+ specify in a <code class="ph codeph">USE <var class="keyword varname">db_name</var></code> statement, then after switching to a database
+ you issue <code class="ph codeph">SHOW TABLES</code> to see the names you can specify in <code class="ph codeph">SELECT</code> and
+ <code class="ph codeph">INSERT</code> statements.
+ </p>
+
+ <p class="p">
+ In <span class="keyword">Impala 2.5</span> and higher, the output includes a second column showing any associated comment
+ for each database.
+ </p>
+
+ <p class="p">
+ The output of <code class="ph codeph">SHOW DATABASES</code> includes the special <code class="ph codeph">_impala_builtins</code>
+ database, which lets you view definitions of built-in functions, as described under <code class="ph codeph">SHOW
+ FUNCTIONS</code>.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Security considerations:</strong>
+ </p>
+
+ <p class="p">
+ When authorization is enabled, the output of the <code class="ph codeph">SHOW</code> statement is limited to those
+ objects for which you have some privilege. There might be other database, tables, and so on, but their
+ names are concealed. If you believe an object exists but you cannot see it in the <code class="ph codeph">SHOW</code>
+ output, check with the system administrator if you need to be granted a new privilege for that object. See
+ <a class="xref" href="../shared/../topics/impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a> for how to set up authorization and add
+ privileges for specific kinds of objects.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Examples:</strong>
+ </p>
+
+ <p class="p">
+ This example shows how you might locate a particular table on an unfamiliar system. The
+ <code class="ph codeph">DEFAULT</code> database is the one you initially connect to; a database with that name is present
+ on every system. You can issue <code class="ph codeph">SHOW TABLES IN <var class="keyword varname">db_name</var></code> without going
+ into a database, or <code class="ph codeph">SHOW TABLES</code> once you are inside a particular database.
+ </p>
+
+<pre class="pre codeblock"><code>[localhost:21000] > show databases;
++------------------+----------------------------------------------+
+| name | comment |
++------------------+----------------------------------------------+
+| _impala_builtins | System database for Impala builtin functions |
+| default | Default Hive database |
+| file_formats | |
++------------------+----------------------------------------------+
+Returned 3 row(s) in 0.02s
+[localhost:21000] > show tables in file_formats;
++--------------------+
+| name |
++--------------------+
+| parquet_table |
+| rcfile_table |
+| sequencefile_table |
+| textfile_table |
++--------------------+
+Returned 4 row(s) in 0.01s
+[localhost:21000] > use file_formats;
+[localhost:21000] > show tables like '*parq*';
++--------------------+
+| name |
++--------------------+
+| parquet_table |
++--------------------+
+Returned 1 row(s) in 0.01s</code></pre>
+
+ <p class="p">
+ <strong class="ph b">HDFS permissions:</strong> This statement does not touch any HDFS files or directories,
+ therefore no HDFS permissions are required.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Related information:</strong>
+ </p>
+
+ <p class="p">
+ <a class="xref" href="impala_databases.html#databases">Overview of Impala Databases</a>, <a class="xref" href="impala_create_database.html#create_database">CREATE DATABASE Statement</a>,
+ <a class="xref" href="impala_drop_database.html#drop_database">DROP DATABASE Statement</a>, <a class="xref" href="impala_use.html#use">USE Statement</a>
+ <a class="xref" href="impala_show.html#show_tables">SHOW TABLES Statement</a>,
+ <a class="xref" href="impala_show.html#show_functions">SHOW FUNCTIONS Statement</a>
+ </p>
+ </div>
+ </article>
+
+ <article class="topic concept nested1" aria-labelledby="ariaid-title8" id="show__show_tables">
+
+ <h2 class="title topictitle2" id="ariaid-title8">SHOW TABLES Statement</h2>
+
+
+ <div class="body conbody">
+
+ <p class="p">
+ Displays the names of tables. By default, lists tables in the current database, or with the
+ <code class="ph codeph">IN</code> clause, in a specified database. By default, lists all tables, or with the
+ <code class="ph codeph">LIKE</code> clause, only those whose name match a pattern with <code class="ph codeph">*</code> wildcards.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Security considerations:</strong>
+ </p>
+
+ <p class="p">
+ When authorization is enabled, the output of the <code class="ph codeph">SHOW</code> statement is limited to those
+ objects for which you have some privilege. There might be other database, tables, and so on, but their
+ names are concealed. If you believe an object exists but you cannot see it in the <code class="ph codeph">SHOW</code>
+ output, check with the system administrator if you need to be granted a new privilege for that object. See
+ <a class="xref" href="../shared/../topics/impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a> for how to set up authorization and add
+ privileges for specific kinds of objects.
+ </p>
+
+ <p class="p">
+ The user ID that the <span class="keyword cmdname">impalad</span> daemon runs under,
+ typically the <code class="ph codeph">impala</code> user, must have read and execute
+ permissions for all directories that are part of the table.
+ (A table could span multiple different HDFS directories if it is partitioned.
+ The directories could be widely scattered because a partition can reside
+ in an arbitrary HDFS directory based on its <code class="ph codeph">LOCATION</code> attribute.)
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Examples:</strong>
+ </p>
+
+ <p class="p">
+ The following examples demonstrate the <code class="ph codeph">SHOW TABLES</code> statement.
+ If the database contains no tables, the result set is empty.
+ If the database does contain tables, <code class="ph codeph">SHOW TABLES IN <var class="keyword varname">db_name</var></code>
+ lists all the table names. <code class="ph codeph">SHOW TABLES</code> with no qualifiers lists
+ all the table names in the current database.
+ </p>
+
+<pre class="pre codeblock"><code>create database empty_db;
+show tables in empty_db;
+Fetched 0 row(s) in 0.11s
+
+create database full_db;
+create table full_db.t1 (x int);
+create table full_db.t2 like full_db.t1;
+
+show tables in full_db;
++------+
+| name |
++------+
+| t1 |
+| t2 |
++------+
+
+use full_db;
+show tables;
++------+
+| name |
++------+
+| t1 |
+| t2 |
++------+
+</code></pre>
+
+ <p class="p">
+ This example demonstrates how <code class="ph codeph">SHOW TABLES LIKE '<var class="keyword varname">wildcard_pattern</var>'</code>
+ lists table names that match a pattern, or multiple alternative patterns.
+ The ability to do wildcard matches for table names makes it helpful to establish naming conventions for tables to
+ conveniently locate a group of related tables.
+ </p>
+
+<pre class="pre codeblock"><code>create table fact_tbl (x int);
+create table dim_tbl_1 (s string);
+create table dim_tbl_2 (s string);
+
+/* Asterisk is the wildcard character. Only 2 out of the 3 just-created tables are returned. */
+show tables like 'dim*';
++-----------+
+| name |
++-----------+
+| dim_tbl_1 |
+| dim_tbl_2 |
++-----------+
+
+/* We are already in the FULL_DB database, but just to be sure we can specify the database name also. */
+show tables in full_db like 'dim*';
++-----------+
+| name |
++-----------+
+| dim_tbl_1 |
+| dim_tbl_2 |
++-----------+
+
+/* The pipe character separates multiple wildcard patterns. */
+show tables like '*dim*|t*';
++-----------+
+| name |
++-----------+
+| dim_tbl_1 |
+| dim_tbl_2 |
+| t1 |
+| t2 |
++-----------+
+</code></pre>
+
+ <p class="p">
+ <strong class="ph b">HDFS permissions:</strong> This statement does not touch any HDFS files or directories,
+ therefore no HDFS permissions are required.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Related information:</strong>
+ </p>
+
+ <p class="p">
+ <a class="xref" href="impala_tables.html#tables">Overview of Impala Tables</a>, <a class="xref" href="impala_create_table.html#create_table">CREATE TABLE Statement</a>,
+ <a class="xref" href="impala_alter_table.html#alter_table">ALTER TABLE Statement</a>, <a class="xref" href="impala_drop_table.html#drop_table">DROP TABLE Statement</a>,
+ <a class="xref" href="impala_describe.html#describe">DESCRIBE Statement</a>, <a class="xref" href="impala_show.html#show_create_table">SHOW CREATE TABLE Statement</a>,
+ <a class="xref" href="impala_show.html#show_table_stats">SHOW TABLE STATS Statement</a>,
+ <a class="xref" href="impala_show.html#show_databases">SHOW DATABASES</a>,
+ <a class="xref" href="impala_show.html#show_functions">SHOW FUNCTIONS Statement</a>
+ </p>
+ </div>
+ </article>
+
+ <article class="topic concept nested1" aria-labelledby="ariaid-title9" id="show__show_create_table">
+
+ <h2 class="title topictitle2" id="ariaid-title9">SHOW CREATE TABLE Statement</h2>
+
+
+ <div class="body conbody">
+
+ <p class="p">
+ As a schema changes over time, you might run a <code class="ph codeph">CREATE TABLE</code> statement followed by several
+ <code class="ph codeph">ALTER TABLE</code> statements. To capture the cumulative effect of all those statements,
+ <code class="ph codeph">SHOW CREATE TABLE</code> displays a <code class="ph codeph">CREATE TABLE</code> statement that would reproduce
+ the current structure of a table. You can use this output in scripts that set up or clone a group of
+ tables, rather than trying to reproduce the original sequence of <code class="ph codeph">CREATE TABLE</code> and
+ <code class="ph codeph">ALTER TABLE</code> statements. When creating variations on the original table, or cloning the
+ original table on a different system, you might need to edit the <code class="ph codeph">SHOW CREATE TABLE</code> output
+ to change things such as the database name, <code class="ph codeph">LOCATION</code> field, and so on that might be
+ different on the destination system.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Security considerations:</strong>
+ </p>
+
+ <p class="p">
+ When authorization is enabled, the output of the <code class="ph codeph">SHOW</code> statement is limited to those
+ objects for which you have some privilege. There might be other database, tables, and so on, but their
+ names are concealed. If you believe an object exists but you cannot see it in the <code class="ph codeph">SHOW</code>
+ output, check with the system administrator if you need to be granted a new privilege for that object. See
+ <a class="xref" href="../shared/../topics/impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a> for how to set up authorization and add
+ privileges for specific kinds of objects.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">HDFS permissions:</strong> This statement does not touch any HDFS files or directories,
+ therefore no HDFS permissions are required.
+ </p>
+
+ <p class="p">
+ For Kudu tables:
+ </p>
+
+ <ul class="ul">
+ <li class="li">
+ <p class="p">
+ The column specifications include attributes such as <code class="ph codeph">NULL</code>,
+ <code class="ph codeph">NOT NULL</code>, <code class="ph codeph">ENCODING</code>, and <code class="ph codeph">COMPRESSION</code>.
+ If you do not specify those attributes in the original <code class="ph codeph">CREATE TABLE</code> statement,
+ the <code class="ph codeph">SHOW CREATE TABLE</code> output displays the defaults that were used.
+ </p>
+ </li>
+ <li class="li">
+ <p class="p">
+ The specifications of any <code class="ph codeph">RANGE</code> clauses are not displayed in full.
+ To see the definition of the range clauses for a Kudu table, use the <code class="ph codeph">SHOW RANGE PARTITIONS</code> statement.
+ </p>
+ </li>
+ <li class="li">
+ <p class="p">
+ The <code class="ph codeph">TBLPROPERTIES</code> output reflects the Kudu master address
+ and the internal Kudu name associated with the Impala table.
+ </p>
+ </li>
+ </ul>
+
+<pre class="pre codeblock"><code>
+show CREATE TABLE numeric_grades_default_letter;
++------------------------------------------------------------------------------------------------+
+| result |
++------------------------------------------------------------------------------------------------+
+| CREATE TABLE user.numeric_grades_default_letter ( |
+| score TINYINT NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, |
+| letter_grade STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION DEFAULT '-', |
+| student STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, |
+| PRIMARY KEY (score) |
+| ) |
+| PARTITION BY <strong class="ph b">RANGE (score) (...)</strong> |
+| STORED AS KUDU |
+| TBLPROPERTIES ('kudu.master_addresses'='vd0342.example.com:7051', |
+| 'kudu.table_name'='impala::USER.numeric_grades_default_letter') |
++------------------------------------------------------------------------------------------------+
+
+show range partitions numeric_grades_default_letter;
++--------------------+
+| RANGE (score) |
++--------------------+
+| 0 <= VALUES < 50 |
+| 50 <= VALUES < 65 |
+| 65 <= VALUES < 80 |
+| 80 <= VALUES < 100 |
++--------------------+
+</code></pre>
+
+ <p class="p">
+ <strong class="ph b">Examples:</strong>
+ </p>
+
+ <p class="p">
+ The following example shows how various clauses from the <code class="ph codeph">CREATE TABLE</code> statement are
+ represented in the output of <code class="ph codeph">SHOW CREATE TABLE</code>.
+ </p>
+
+<pre class="pre codeblock"><code>create table show_create_table_demo (id int comment "Unique ID", y double, s string)
+ partitioned by (year smallint)
+ stored as parquet;
+
+show create table show_create_table_demo;
++----------------------------------------------------------------------------------------+
+| result |
++----------------------------------------------------------------------------------------+
+| CREATE TABLE scratch.show_create_table_demo ( |
+| id INT COMMENT 'Unique ID', |
+| y DOUBLE, |
+| s STRING |
+| ) |
+| PARTITIONED BY ( |
+| year SMALLINT |
+| ) |
+| STORED AS PARQUET |
+| LOCATION 'hdfs://127.0.0.1:8020/user/hive/warehouse/scratch.db/show_create_table_demo' |
+| TBLPROPERTIES ('transient_lastDdlTime'='1418152582') |
++----------------------------------------------------------------------------------------+
+</code></pre>
+
+ <p class="p">
+ The following example shows how, after a sequence of <code class="ph codeph">ALTER TABLE</code> statements, the output
+ from <code class="ph codeph">SHOW CREATE TABLE</code> represents the current state of the table. This output could be
+ used to create a matching table rather than executing the original <code class="ph codeph">CREATE TABLE</code> and
+ sequence of <code class="ph codeph">ALTER TABLE</code> statements.
+ </p>
+
+<pre class="pre codeblock"><code>alter table show_create_table_demo drop column s;
+alter table show_create_table_demo set fileformat textfile;
+
+show create table show_create_table_demo;
++----------------------------------------------------------------------------------------+
+| result |
++----------------------------------------------------------------------------------------+
+| CREATE TABLE scratch.show_create_table_demo ( |
+| id INT COMMENT 'Unique ID', |
+| y DOUBLE |
+| ) |
+| PARTITIONED BY ( |
+| year SMALLINT |
+| ) |
+| STORED AS TEXTFILE |
+| LOCATION 'hdfs://127.0.0.1:8020/user/hive/warehouse/demo.db/show_create_table_demo' |
+| TBLPROPERTIES ('transient_lastDdlTime'='1418152638') |
++----------------------------------------------------------------------------------------+
+</code></pre>
+
+ <p class="p">
+ <strong class="ph b">Related information:</strong>
+ </p>
+
+ <p class="p">
+ <a class="xref" href="impala_create_table.html#create_table">CREATE TABLE Statement</a>, <a class="xref" href="impala_describe.html#describe">DESCRIBE Statement</a>,
+ <a class="xref" href="impala_show.html#show_tables">SHOW TABLES Statement</a>
+ </p>
+ </div>
+ </article>
+
+ <article class="topic concept nested1" aria-labelledby="ariaid-title10" id="show__show_table_stats">
+
+ <h2 class="title topictitle2" id="ariaid-title10">SHOW TABLE STATS Statement</h2>
+
+
+ <div class="body conbody">
+
+ <p class="p">
+ The <code class="ph codeph">SHOW TABLE STATS</code> and <code class="ph codeph">SHOW COLUMN STATS</code> variants are important for
+ tuning performance and diagnosing performance issues, especially with the largest tables and the most
+ complex join queries.
+ </p>
+
+ <p class="p">
+ Any values that are not available (because the <code class="ph codeph">COMPUTE STATS</code> statement has not been run
+ yet) are displayed as <code class="ph codeph">-1</code>.
+ </p>
+
+ <p class="p">
+ <code class="ph codeph">SHOW TABLE STATS</code> provides some general information about the table, such as the number of
+ files, overall size of the data, whether some or all of the data is in the HDFS cache, and the file format,
+ that is useful whether or not you have run the <code class="ph codeph">COMPUTE STATS</code> statement. A
+ <code class="ph codeph">-1</code> in the <code class="ph codeph">#Rows</code> output column indicates that the <code class="ph codeph">COMPUTE
+ STATS</code> statement has never been run for this table. If the table is partitioned, <code class="ph codeph">SHOW TABLE
+ STATS</code> provides this information for each partition. (It produces the same output as the
+ <code class="ph codeph">SHOW PARTITIONS</code> statement in this case.)
+ </p>
+
+ <p class="p">
+ The output of <code class="ph codeph">SHOW COLUMN STATS</code> is primarily only useful after the <code class="ph codeph">COMPUTE
+ STATS</code> statement has been run on the table. A <code class="ph codeph">-1</code> in the <code class="ph codeph">#Distinct
+ Values</code> output column indicates that the <code class="ph codeph">COMPUTE STATS</code> statement has never been
+ run for this table. Currently, Impala always leaves the <code class="ph codeph">#Nulls</code> column as
+ <code class="ph codeph">-1</code>, even after <code class="ph codeph">COMPUTE STATS</code> has been run.
+ </p>
+
+ <p class="p">
+ These <code class="ph codeph">SHOW</code> statements work on actual tables only, not on views.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Security considerations:</strong>
+ </p>
+
+ <p class="p">
+ When authorization is enabled, the output of the <code class="ph codeph">SHOW</code> statement is limited to those
+ objects for which you have some privilege. There might be other database, tables, and so on, but their
+ names are concealed. If you believe an object exists but you cannot see it in the <code class="ph codeph">SHOW</code>
+ output, check with the system administrator if you need to be granted a new privilege for that object. See
+ <a class="xref" href="../shared/../topics/impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a> for how to set up authorization and add
+ privileges for specific kinds of objects.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Kudu considerations:</strong>
+ </p>
+
+ <p class="p">
+ Because Kudu tables do not have characteristics derived from HDFS, such
+ as number of files, file format, and HDFS cache status, the output of
+ <code class="ph codeph">SHOW TABLE STATS</code> reflects different characteristics
+ that apply to Kudu tables. If the Kudu table is created with the
+ clause <code class="ph codeph">PARTITIONS 20</code>, then the result set of
+ <code class="ph codeph">SHOW TABLE STATS</code> consists of 20 rows, each representing
+ one of the numbered partitions. For example:
+ </p>
+
+<pre class="pre codeblock"><code>
+show table stats kudu_table;
++--------+-----------+----------+-----------------------+------------+
+| # Rows | Start Key | Stop Key | Leader Replica | # Replicas |
++--------+-----------+----------+-----------------------+------------+
+| -1 | | 00000001 | host.example.com:7050 | 3 |
+| -1 | 00000001 | 00000002 | host.example.com:7050 | 3 |
+| -1 | 00000002 | 00000003 | host.example.com:7050 | 3 |
+| -1 | 00000003 | 00000004 | host.example.com:7050 | 3 |
+| -1 | 00000004 | 00000005 | host.example.com:7050 | 3 |
+...
+</code></pre>
+
+ <p class="p">
+ Impala does not compute the number of rows for each partition for
+ Kudu tables. Therefore, you do not need to re-run <code class="ph codeph">COMPUTE STATS</code>
+ when you see -1 in the <code class="ph codeph"># Rows</code> column of the output from
+ <code class="ph codeph">SHOW TABLE STATS</code>. That column always shows -1 for
+ all Kudu tables.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Examples:</strong>
+ </p>
+
+ <p class="p">
+ The following examples show how the <code class="ph codeph">SHOW TABLE STATS</code> statement displays physical
+ information about a table and the associated data files:
+ </p>
+
+<pre class="pre codeblock"><code>show table stats store_sales;
++-------+--------+----------+--------------+--------+-------------------+
+| #Rows | #Files | Size | Bytes Cached | Format | Incremental stats |
++-------+--------+----------+--------------+--------+-------------------+
+| -1 | 1 | 370.45MB | NOT CACHED | TEXT | false |
++-------+--------+----------+--------------+--------+-------------------+
+
+show table stats customer;
++-------+--------+---------+--------------+--------+-------------------+
+| #Rows | #Files | Size | Bytes Cached | Format | Incremental stats |
++-------+--------+---------+--------------+--------+-------------------+
+| -1 | 1 | 12.60MB | NOT CACHED | TEXT | false |
++-------+--------+---------+--------------+--------+-------------------+
+</code></pre>
+
+ <p class="p">
+ The following example shows how, after a <code class="ph codeph">COMPUTE STATS</code> or <code class="ph codeph">COMPUTE INCREMENTAL
+ STATS</code> statement, the <code class="ph codeph">#Rows</code> field is now filled in. Because the
+ <code class="ph codeph">STORE_SALES</code> table in this example is not partitioned, the <code class="ph codeph">COMPUTE INCREMENTAL
+ STATS</code> statement produces regular stats rather than incremental stats, therefore the
+ <code class="ph codeph">Incremental stats</code> field remains <code class="ph codeph">false</code>.
+ </p>
+
+<pre class="pre codeblock"><code>compute stats customer;
++------------------------------------------+
+| summary |
++------------------------------------------+
+| Updated 1 partition(s) and 18 column(s). |
++------------------------------------------+
+
+show table stats customer;
++--------+--------+---------+--------------+--------+-------------------+
+| #Rows | #Files | Size | Bytes Cached | Format | Incremental stats |
++--------+--------+---------+--------------+--------+-------------------+
+| 100000 | 1 | 12.60MB | NOT CACHED | TEXT | false |
++--------+--------+---------+--------------+--------+-------------------+
+
+compute incremental stats store_sales;
++------------------------------------------+
+| summary |
++------------------------------------------+
+| Updated 1 partition(s) and 23 column(s). |
++------------------------------------------+
+
+show table stats store_sales;
++---------+--------+----------+--------------+--------+-------------------+
+| #Rows | #Files | Size | Bytes Cached | Format | Incremental stats |
++---------+--------+----------+--------------+--------+-------------------+
+| 2880404 | 1 | 370.45MB | NOT CACHED | TEXT | false |
++---------+--------+----------+--------------+--------+-------------------+
+</code></pre>
+
+ <p class="p">
+ <strong class="ph b">HDFS permissions:</strong>
+ </p>
+ <p class="p">
+ The user ID that the <span class="keyword cmdname">impalad</span> daemon runs under,
+ typically the <code class="ph codeph">impala</code> user, must have read and execute
+ permissions for all directories that are part of the table.
+ (A table could span multiple different HDFS directories if it is partitioned.
+ The directories could be widely scattered because a partition can reside
+ in an arbitrary HDFS directory based on its <code class="ph codeph">LOCATION</code> attribute.)
+ The Impala user must also have execute
+ permission for the database directory, and any parent directories of the database directory in HDFS.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Related information:</strong>
+ </p>
+
+ <p class="p">
+ <a class="xref" href="impala_compute_stats.html#compute_stats">COMPUTE STATS Statement</a>, <a class="xref" href="impala_show.html#show_column_stats">SHOW COLUMN STATS Statement</a>
+ </p>
+
+ <p class="p">
+ See <a class="xref" href="impala_perf_stats.html#perf_stats">Table and Column Statistics</a> for usage information and examples.
+ </p>
+ </div>
+ </article>
+
+ <article class="topic concept nested1" aria-labelledby="ariaid-title11" id="show__show_column_stats">
+
+ <h2 class="title topictitle2" id="ariaid-title11">SHOW COLUMN STATS Statement</h2>
+
+
+ <div class="body conbody">
+
+ <p class="p">
+ The <code class="ph codeph">SHOW TABLE STATS</code> and <code class="ph codeph">SHOW COLUMN STATS</code> variants are important for
+ tuning performance and diagnosing performance issues, especially with the largest tables and the most
+ complex join queries.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Security considerations:</strong>
+ </p>
+
+ <p class="p">
+ When authorization is enabled, the output of the <code class="ph codeph">SHOW</code> statement is limited to those
+ objects for which you have some privilege. There might be other database, tables, and so on, but their
+ names are concealed. If you believe an object exists but you cannot see it in the <code class="ph codeph">SHOW</code>
+ output, check with the system administrator if you need to be granted a new privilege for that object. See
+ <a class="xref" href="../shared/../topics/impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a> for how to set up authorization and add
+ privileges for specific kinds of objects.
+ </p>
+
+ <p class="p">
+ The output for <code class="ph codeph">SHOW COLUMN STATS</code> includes
+ the relevant information for Kudu tables.
+ The information for column statistics that originates in the
+ underlying Kudu storage layer is also represented in the
+ metastore database that Impala uses.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Examples:</strong>
+ </p>
+
+ <p class="p">
+ The following examples show the output of the <code class="ph codeph">SHOW COLUMN STATS</code> statement for some tables,
+ before the <code class="ph codeph">COMPUTE STATS</code> statement is run. Impala deduces some information, such as
+ maximum and average size for fixed-length columns, and leaves and unknown values as <code class="ph codeph">-1</code>.
+ </p>
+
+<pre class="pre codeblock"><code>show column stats customer;
++------------------------+--------+------------------+--------+----------+----------+
+| Column | Type | #Distinct Values | #Nulls | Max Size | Avg Size |
++------------------------+--------+------------------+--------+----------+----------+
+| c_customer_sk | INT | -1 | -1 | 4 | 4 |
+| c_customer_id | STRING | -1 | -1 | -1 | -1 |
+| c_current_cdemo_sk | INT | -1 | -1 | 4 | 4 |
+| c_current_hdemo_sk | INT | -1 | -1 | 4 | 4 |
+| c_current_addr_sk | INT | -1 | -1 | 4 | 4 |
+| c_first_shipto_date_sk | INT | -1 | -1 | 4 | 4 |
+| c_first_sales_date_sk | INT | -1 | -1 | 4 | 4 |
+| c_salutation | STRING | -1 | -1 | -1 | -1 |
+| c_first_name | STRING | -1 | -1 | -1 | -1 |
+| c_last_name | STRING | -1 | -1 | -1 | -1 |
+| c_preferred_cust_flag | STRING | -1 | -1 | -1 | -1 |
+| c_birth_day | INT | -1 | -1 | 4 | 4 |
+| c_birth_month | INT | -1 | -1 | 4 | 4 |
+| c_birth_year | INT | -1 | -1 | 4 | 4 |
+| c_birth_country | STRING | -1 | -1 | -1 | -1 |
+| c_login | STRING | -1 | -1 | -1 | -1 |
+| c_email_address | STRING | -1 | -1 | -1 | -1 |
+| c_last_review_date | STRING | -1 | -1 | -1 | -1 |
++------------------------+--------+------------------+--------+----------+----------+
+
+show column stats store_sales;
++-----------------------+-------+------------------+--------+----------+----------+
+| Column | Type | #Distinct Values | #Nulls | Max Size | Avg Size |
++-----------------------+-------+------------------+--------+----------+----------+
+| ss_sold_date_sk | INT | -1 | -1 | 4 | 4 |
+| ss_sold_time_sk | INT | -1 | -1 | 4 | 4 |
+| ss_item_sk | INT | -1 | -1 | 4 | 4 |
+| ss_customer_sk | INT | -1 | -1 | 4 | 4 |
+| ss_cdemo_sk | INT | -1 | -1 | 4 | 4 |
+| ss_hdemo_sk | INT | -1 | -1 | 4 | 4 |
+| ss_addr_sk | INT | -1 | -1 | 4 | 4 |
+| ss_store_sk | INT | -1 | -1 | 4 | 4 |
+| ss_promo_sk | INT | -1 | -1 | 4 | 4 |
+| ss_ticket_number | INT | -1 | -1 | 4 | 4 |
+| ss_quantity | INT | -1 | -1 | 4 | 4 |
+| ss_wholesale_cost | FLOAT | -1 | -1 | 4 | 4 |
+| ss_list_price | FLOAT | -1 | -1 | 4 | 4 |
+| ss_sales_price | FLOAT | -1 | -1 | 4 | 4 |
+| ss_ext_discount_amt | FLOAT | -1 | -1 | 4 | 4 |
+| ss_ext_sales_price | FLOAT | -1 | -1 | 4 | 4 |
+| ss_ext_wholesale_cost | FLOAT | -1 | -1 | 4 | 4 |
+| ss_ext_list_price | FLOAT | -1 | -1 | 4 | 4 |
+| ss_ext_tax | FLOAT | -1 | -1 | 4 | 4 |
+| ss_coupon_amt | FLOAT | -1 | -1 | 4 | 4 |
+| ss_net_paid | FLOAT | -1 | -1 | 4 | 4 |
+| ss_net_paid_inc_tax | FLOAT | -1 | -1 | 4 | 4 |
+| ss_net_profit | FLOAT | -1 | -1 | 4 | 4 |
++-----------------------+-------+------------------+--------+----------+----------+
+</code></pre>
+
+ <p class="p">
+ The following examples show the output of the <code class="ph codeph">SHOW COLUMN STATS</code> statement for some tables,
+ after the <code class="ph codeph">COMPUTE STATS</code> statement is run. Now most of the <code class="ph codeph">-1</code> values are
+ changed to reflect the actual table data. The <code class="ph codeph">#Nulls</code> column remains <code class="ph codeph">-1</code>
+ because Impala does not use the number of <code class="ph codeph">NULL</code> values to influence query planning.
+ </p>
+
+<pre class="pre codeblock"><code>compute stats customer;
++------------------------------------------+
+| summary |
++------------------------------------------+
+| Updated 1 partition(s) and 18 column(s). |
++------------------------------------------+
+
+compute stats store_sales;
++------------------------------------------+
+| summary |
++------------------------------------------+
+| Updated 1 partition(s) and 23 column(s). |
++------------------------------------------+
+
+show column stats customer;
++------------------------+--------+------------------+--------+----------+--------+
+| Column | Type | #Distinct Values | #Nulls | Max Size | Avg Size
++------------------------+--------+------------------+--------+----------+--------+
+| c_customer_sk | INT | 139017 | -1 | 4 | 4 |
+| c_customer_id | STRING | 111904 | -1 | 16 | 16 |
+| c_current_cdemo_sk | INT | 95837 | -1 | 4 | 4 |
+| c_current_hdemo_sk | INT | 8097 | -1 | 4 | 4 |
+| c_current_addr_sk | INT | 57334 | -1 | 4 | 4 |
+| c_first_shipto_date_sk | INT | 4374 | -1 | 4 | 4 |
+| c_first_sales_date_sk | INT | 4409 | -1 | 4 | 4 |
+| c_salutation | STRING | 7 | -1 | 4 | 3.1308 |
+| c_first_name | STRING | 3887 | -1 | 11 | 5.6356 |
+| c_last_name | STRING | 4739 | -1 | 13 | 5.9106 |
+| c_preferred_cust_flag | STRING | 3 | -1 | 1 | 0.9656 |
+| c_birth_day | INT | 31 | -1 | 4 | 4 |
+| c_birth_month | INT | 12 | -1 | 4 | 4 |
+| c_birth_year | INT | 71 | -1 | 4 | 4 |
+| c_birth_country | STRING | 205 | -1 | 20 | 8.4001 |
+| c_login | STRING | 1 | -1 | 0 | 0 |
+| c_email_address | STRING | 94492 | -1 | 46 | 26.485 |
+| c_last_review_date | STRING | 349 | -1 | 7 | 6.7561 |
++------------------------+--------+------------------+--------+----------+--------+
+
+show column stats store_sales;
++-----------------------+-------+------------------+--------+----------+----------+
+| Column | Type | #Distinct Values | #Nulls | Max Size | Avg Size |
++-----------------------+-------+------------------+--------+----------+----------+
+| ss_sold_date_sk | INT | 4395 | -1 | 4 | 4 |
+| ss_sold_time_sk | INT | 63617 | -1 | 4 | 4 |
+| ss_item_sk | INT | 19463 | -1 | 4 | 4 |
+| ss_customer_sk | INT | 122720 | -1 | 4 | 4 |
+| ss_cdemo_sk | INT | 242982 | -1 | 4 | 4 |
+| ss_hdemo_sk | INT | 8097 | -1 | 4 | 4 |
+| ss_addr_sk | INT | 70770 | -1 | 4 | 4 |
+| ss_store_sk | INT | 6 | -1 | 4 | 4 |
+| ss_promo_sk | INT | 355 | -1 | 4 | 4 |
+| ss_ticket_number | INT | 304098 | -1 | 4 | 4 |
+| ss_quantity | INT | 105 | -1 | 4 | 4 |
+| ss_wholesale_cost | FLOAT | 9600 | -1 | 4 | 4 |
+| ss_list_price | FLOAT | 22191 | -1 | 4 | 4 |
+| ss_sales_price | FLOAT | 20693 | -1 | 4 | 4 |
+| ss_ext_discount_amt | FLOAT | 228141 | -1 | 4 | 4 |
+| ss_ext_sales_price | FLOAT | 433550 | -1 | 4 | 4 |
+| ss_ext_wholesale_cost | FLOAT | 406291 | -1 | 4 | 4 |
+| ss_ext_list_price | FLOAT | 574871 | -1 | 4 | 4 |
+| ss_ext_tax | FLOAT | 91806 | -1 | 4 | 4 |
+| ss_coupon_amt | FLOAT | 228141 | -1 | 4 | 4 |
+| ss_net_paid | FLOAT | 493107 | -1 | 4 | 4 |
+| ss_net_paid_inc_tax | FLOAT | 653523 | -1 | 4 | 4 |
+| ss_net_profit | FLOAT | 611934 | -1 | 4 | 4 |
++-----------------------+-------+------------------+--------+----------+----------+
+</code></pre>
+
+ <p class="p">
+ <strong class="ph b">HDFS permissions:</strong>
+ </p>
+ <p class="p">
+ The user ID that the <span class="keyword cmdname">impalad</span> daemon runs under,
+ typically the <code class="ph codeph">impala</code> user, must have read and execute
+ permissions for all directories that are part of the table.
+ (A table could span multiple different HDFS directories if it is partitioned.
+ The directories could be widely scattered because a partition can reside
+ in an arbitrary HDFS directory based on its <code class="ph codeph">LOCATION</code> attribute.)
+ The Impala user must also have execute
+ permission for the database directory, and any parent directories of the database directory in HDFS.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Related information:</strong>
+ </p>
+
+ <p class="p">
+ <a class="xref" href="impala_compute_stats.html#compute_stats">COMPUTE STATS Statement</a>, <a class="xref" href="impala_show.html#show_table_stats">SHOW TABLE STATS Statement</a>
+ </p>
+
+ <p class="p">
+ See <a class="xref" href="impala_perf_stats.html#perf_stats">Table and Column Statistics</a> for usage information and examples.
+ </p>
+ </div>
+ </article>
+
+ <article class="topic concept nested1" aria-labelledby="ariaid-title12" id="show__show_partitions">
+
+ <h2 class="title topictitle2" id="ariaid-title12">SHOW PARTITIONS Statement</h2>
+
+
+ <div class="body conbody">
+
+ <p class="p">
+ <code class="ph codeph">SHOW PARTITIONS</code> displays information about each partition for a partitioned table. (The
+ output is the same as the <code class="ph codeph">SHOW TABLE STATS</code> statement, but <code class="ph codeph">SHOW PARTITIONS</code>
+ only works on a partitioned table.) Because it displays table statistics for all partitions, the output is
+ more informative if you have run the <code class="ph codeph">COMPUTE STATS</code> statement after creating all the
+ partitions. See <a class="xref" href="impala_compute_stats.html#compute_stats">COMPUTE STATS Statement</a> for details. For example, on a
+ <code class="ph codeph">CENSUS</code> table partitioned on the <code class="ph codeph">YEAR</code> column:
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Security considerations:</strong>
+ </p>
+
+ <p class="p">
+ When authorization is enabled, the output of the <code class="ph codeph">SHOW</code> statement is limited to those
+ objects for which you have some privilege. There might be other database, tables, and so on, but their
+ names are concealed. If you believe an object exists but you cannot see it in the <code class="ph codeph">SHOW</code>
+ output, check with the system administrator if you need to be granted a new privilege for that object. See
+ <a class="xref" href="../shared/../topics/impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a> for how to set up authorization and add
+ privileges for specific kinds of objects.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Kudu considerations:</strong>
+ </p>
+
+ <p class="p">
+ The optional <code class="ph codeph">RANGE</code> clause only applies to Kudu tables. It displays only the partitions
+ defined by the <code class="ph codeph">RANGE</code> clause of <code class="ph codeph">CREATE TABLE</code> or <code class="ph codeph">ALTER TABLE</code>.
+ </p>
+
+ <p class="p">
+ Although you can specify <code class="ph codeph"><</code> or
+ <code class="ph codeph"><=</code> comparison operators when defining
+ range partitions for Kudu tables, Kudu rewrites them if necessary
+ to represent each range as
+ <code class="ph codeph"><var class="keyword varname">low_bound</var> <= VALUES < <var class="keyword varname">high_bound</var></code>.
+ This rewriting might involve incrementing one of the boundary values
+ or appending a <code class="ph codeph">\0</code> for string values, so that the
+ partition covers the same range as originally specified.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Examples:</strong>
+ </p>
+
+ <p class="p">
+ The following example shows the output for a Parquet, text, or other
+ HDFS-backed table partitioned on the <code class="ph codeph">YEAR</code> column:
+ </p>
+
+<pre class="pre codeblock"><code>[localhost:21000] > show partitions census;
++-------+-------+--------+------+---------+
+| year | #Rows | #Files | Size | Format |
++-------+-------+--------+------+---------+
+| 2000 | -1 | 0 | 0B | TEXT |
+| 2004 | -1 | 0 | 0B | TEXT |
+| 2008 | -1 | 0 | 0B | TEXT |
+| 2010 | -1 | 0 | 0B | TEXT |
+| 2011 | 4 | 1 | 22B | TEXT |
+| 2012 | 4 | 1 | 22B | TEXT |
+| 2013 | 1 | 1 | 231B | PARQUET |
+| Total | 9 | 3 | 275B | |
++-------+-------+--------+------+---------+
+</code></pre>
+
+ <p class="p">
+ The following example shows the output for a Kudu table
+ using the hash partitioning mechanism. The number of
+ rows in the result set corresponds to the values used
+ in the <code class="ph codeph">PARTITIONS <var class="keyword varname">N</var></code>
+ clause of <code class="ph codeph">CREATE TABLE</code>.
+ </p>
+
+<pre class="pre codeblock"><code>
+show partitions million_rows_hash;
+
++--------+-----------+----------+-----------------------+--
+| # Rows | Start Key | Stop Key | Leader Replica | # Replicas
++--------+-----------+----------+-----------------------+--
+| -1 | | 00000001 | n236.example.com:7050 | 3
+| -1 | 00000001 | 00000002 | n236.example.com:7050 | 3
+| -1 | 00000002 | 00000003 | n336.example.com:7050 | 3
+| -1 | 00000003 | 00000004 | n238.example.com:7050 | 3
+| -1 | 00000004 | 00000005 | n338.example.com:7050 | 3
+....
+| -1 | 0000002E | 0000002F | n240.example.com:7050 | 3
+| -1 | 0000002F | 00000030 | n336.example.com:7050 | 3
+| -1 | 00000030 | 00000031 | n240.example.com:7050 | 3
+| -1 | 00000031 | | n334.example.com:7050 | 3
++--------+-----------+----------+-----------------------+--
+Fetched 50 row(s) in 0.05s
+
+</code></pre>
+
+ <p class="p">
+ The following example shows the output for a Kudu table
+ using the range partitioning mechanism:
+ </p>
+
+<pre class="pre codeblock"><code>
+show range partitions million_rows_range;
++-----------------------+
+| RANGE (id) |
++-----------------------+
+| VALUES < "A" |
+| "A" <= VALUES < "[" |
+| "a" <= VALUES < "{" |
+| "{" <= VALUES < "~\0" |
++-----------------------+
+
+</code></pre>
+
+ <p class="p">
+ <strong class="ph b">HDFS permissions:</strong>
+ </p>
+ <p class="p">
+ The user ID that the <span class="keyword cmdname">impalad</span> daemon runs under,
+ typically the <code class="ph codeph">impala</code> user, must have read and execute
+ permissions for all directories that are part of the table.
+ (A table could span multiple different HDFS directories if it is partitioned.
+ The directories could be widely scattered because a partition can reside
+ in an arbitrary HDFS directory based on its <code class="ph codeph">LOCATION</code> attribute.)
+ The Impala user must also have execute
+ permission for the database directory, and any parent directories of the database directory in HDFS.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Related information:</strong>
+ </p>
+
+ <p class="p">
+ See <a class="xref" href="impala_perf_stats.html#perf_stats">Table and Column Statistics</a> for usage information and examples.
+ </p>
+
+ <p class="p">
+ <a class="xref" href="impala_show.html#show_table_stats">SHOW TABLE STATS Statement</a>, <a class="xref" href="impala_partitioning.html#partitioning">Partitioning for Impala Tables</a>
+ </p>
+ </div>
+ </article>
+
+ <article class="topic concept nested1" aria-labelledby="ariaid-title13" id="show__show_functions">
+
+ <h2 class="title topictitle2" id="ariaid-title13">SHOW FUNCTIONS Statement</h2>
+
+
+ <div class="body conbody">
+
+ <p class="p">
+ By default, <code class="ph codeph">SHOW FUNCTIONS</code> displays user-defined functions (UDFs) and <code class="ph codeph">SHOW
+ AGGREGATE FUNCTIONS</code> displays user-defined aggregate functions (UDAFs) associated with a particular
+ database. The output from <code class="ph codeph">SHOW FUNCTIONS</code> includes the argument signature of each function.
+ You specify this argument signature as part of the <code class="ph codeph">DROP FUNCTION</code> statement. You might have
+ several UDFs with the same name, each accepting different argument data types.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Usage notes:</strong>
+ </p>
+
+ <p class="p">
+ In <span class="keyword">Impala 2.5</span> and higher, the <code class="ph codeph">SHOW FUNCTIONS</code> output includes
+ a new column, labelled <code class="ph codeph">is persistent</code>. This property is <code class="ph codeph">true</code> for
+ Impala built-in functions, C++ UDFs, and Java UDFs created using the new <code class="ph codeph">CREATE FUNCTION</code>
+ syntax with no signature. It is <code class="ph codeph">false</code> for Java UDFs created using the old
+ <code class="ph codeph">CREATE FUNCTION</code> syntax that includes the types for the arguments and return value.
+ Any functions with <code class="ph codeph">false</code> shown for this property must be created again by the
+ <code class="ph codeph">CREATE FUNCTION</code> statement each time the Impala catalog server is restarted.
+ See <code class="ph codeph">CREATE FUNCTION</code> for information on switching to the new syntax, so that
+ Java UDFs are preserved across restarts. Java UDFs that are persisted this way are also easier
+ to share across Impala and Hive.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Security considerations:</strong>
+ </p>
+
+ <p class="p">
+ When authorization is enabled, the output of the <code class="ph codeph">SHOW</code> statement is limited to those
+ objects for which you have some privilege. There might be other database, tables, and so on, but their
+ names are concealed. If you believe an object exists but you cannot see it in the <code class="ph codeph">SHOW</code>
+ output, check with the system administrator if you need to be granted a new privilege for that object. See
+ <a class="xref" href="../shared/../topics/impala_authorization.html#authorization">Enabling Sentry Authorization for Impala</a> for how to set up authorization and add
+ privileges for specific kinds of objects.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">HDFS permissions:</strong> This statement does not touch any HDFS files or directories,
+ therefore no HDFS permissions are required.
+ </p>
+
+ <p class="p">
+ <strong class="ph b">Examples:</strong>
+ </p>
+
+ <p class="p">
+ To display Impala built-in functions, specify the special database name <code class="ph codeph">_impala_builtins</code>:
+ </p>
+
+<pre class="pre codeblock"><code>show functions in _impala_builtins;
++--------------+-------------------------------------------------+-------------+---------------+
+| return type | signature | binary type | is persistent |
++--------------+-------------------------------------------------+-------------+---------------+
+| BIGINT | abs(BIGINT) | BUILTIN | true |
+| DECIMAL(*,*) | abs(DECIMAL(*,*)) | BUILTIN | true |
+| DOUBLE | abs(DOUBLE) | BUILTIN | true |
+| FLOAT | abs(FLOAT) | BUILTIN | true |
++----------------+----------------------------------------+
+...
+
+show functions in _impala_builtins like '*week*';
++-------------+------------------------------+-------------+---------------+
+| return type | signature | binary type | is persistent |
++-------------+------------------------------+-------------+---------------+
+| INT | dayofweek(TIMESTAMP) | BUILTIN | true |
+| INT | weekofyear(TIMESTAMP) | BUILTIN | true |
+| TIMESTAMP | weeks_add(TIMESTAMP, BIGINT) | BUILTIN | true |
+| TIMESTAMP | weeks_add(TIMESTAMP, INT) | BUILTIN | true |
+| TIMESTAMP | weeks_sub(TIMESTAMP, BIGINT) | BUILTIN | true |
+| TIMESTAMP | weeks_sub(TIMESTAMP, INT) | BUILTIN | true |
++-------------+------------------------------+-------------+---------------+
+</code></pre>
+
+ <p class="p">
+ <strong class="ph b">Related information:</strong>
+ </p>
+
+ <p class="p">
+ <a class="xref" href="impala_functions_overview.html#functions">Overview of Impala Functions</a>, <a class="xref" href="impala_functions.html#builtins">Impala Built-In Functions</a>,
+ <a class="xref" href="impala_udf.html#udfs">Impala User-Defined Functions (UDFs)</a>,
+ <a class="xref" href="impala_show.html#show_databases">SHOW DATABASES</a>,
+ <a class="xref" href="impala_show.html#show_tables">SHOW TABLES Statement</a>
+ </p>
+ </div>
+ </article>
+
+
+</article></main></body></html>