<?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="s3" rev="2.2.0">

  <title>Using Impala with Amazon S3 Object Store</title>
  <titlealts audience="PDF"><navtitle>S3 Tables</navtitle></titlealts>
  <prolog>
    <metadata>
      <data name="Category" value="Impala"/>
      <data name="Category" value="Amazon"/>
      <data name="Category" value="S3"/>
      <data name="Category" value="Data Analysts"/>
      <data name="Category" value="Developers"/>
      <data name="Category" value="Querying"/>
      <data name="Category" value="Preview Features"/>
    </metadata>
  </prolog>

  <conbody>

    <p rev="2.2.0"> You can use Impala to query data residing on the Amazon S3
      object store. This capability allows convenient access to a storage system
      that is remotely managed, accessible from anywhere, and integrated with
      various cloud-based services. Impala can query files in any supported file
      format from S3. The S3 storage location can be for an entire table, or
      individual partitions in a partitioned table. </p>

    <p outputclass="toc inpage"/>

  </conbody>
  <concept id="s3_best_practices" rev="2.6.0 IMPALA-1878">
    <title>Best Practices for Using Impala with S3</title>
    <prolog>
      <metadata>
        <data name="Category" value="Guidelines"/>
        <data name="Category" value="Best Practices"/>
      </metadata>
    </prolog>
    <conbody>
      <p> The following guidelines summarize the best practices described in the
        rest of this topic: </p>
      <ul>
        <li>
          <p> Any reference to an S3 location must be fully qualified when S3 is
            not designated as the default storage, for example,
              <codeph>s3a:://[s3-bucket-name]</codeph>.</p>
        </li>
        <li>
          <p> Set <codeph>fs.s3a.connection.maximum</codeph> to 1500 for
              <cmdname>impalad</cmdname>. </p>
        </li>
        <li>
          <p> Set <codeph>fs.s3a.block.size</codeph> to 134217728 (128 MB in
            bytes) if most Parquet files queried by Impala were written by Hive
            or ParquetMR jobs. </p>
          <p>Set the block size to 268435456 (256 MB in bytes) if most Parquet
            files queried by Impala were written by Impala. </p>
          <p>Starting in Impala 3.4.0, instead of
              <codeph>fs.s3a.block.size</codeph>, the
              <codeph>PARQUET_OBJECT_STORE_SPLIT_SIZE</codeph> query option
            controls the Parquet-specific split size. The default value is 256
            MB.</p>
        </li>
        <li>
          <p>
            <codeph>DROP TABLE .. PURGE</codeph> is much faster than the default
              <codeph>DROP TABLE</codeph>. The same applies to <codeph>ALTER
              TABLE ... DROP PARTITION PURGE</codeph> versus the default
              <codeph>DROP PARTITION</codeph> operation. Due to the eventually
            consistent nature of S3, the files for that table or partition could
            remain for some unbounded time when using <codeph>PURGE</codeph>.
            The default <codeph>DROP TABLE/PARTITION</codeph> is slow because
            Impala copies the files to the S3A trash folder, and Impala waits
            until all the data is moved. <codeph>DROP TABLE/PARTITION ..
              PURGE</codeph> is a fast delete operation, and the Impala
            statement finishes quickly even though the change might not have
            propagated fully throughout S3. </p>
        </li>
        <li>
          <p>
            <codeph>INSERT</codeph> statements are faster than <codeph>INSERT
              OVERWRITE</codeph> for S3. The query option
              <codeph>S3_SKIP_INSERT_STAGING</codeph>, which is set to
              <codeph>true</codeph> by default, skips the staging step for
            regular <codeph>INSERT</codeph> (but not <codeph>INSERT
              OVERWRITE</codeph>). This makes the operation much faster, but
            consistency is not guaranteed: if a node fails during execution, the
            table could end up with inconsistent data. Set this option to
              <codeph>false</codeph> if stronger consistency is required,
            however, this setting will make the <codeph>INSERT</codeph>
            operations slower. </p>
          <ul>
            <li>
              <p> For Impala-ACID tables, both <codeph>INSERT</codeph> and
                  <codeph>INSERT OVERWRITE</codeph> tables for S3 are fast,
                regardless of the setting of
                  <codeph>S3_SKIP_INSERT_STAGING</codeph>. Plus, consistency is
                guaranteed with ACID tables.</p>
            </li>
          </ul>
        </li>
        <li>Enable <xref href="impala_data_cache.xml#data_cache">data cache for
            remote reads</xref>.</li>
        <li>Enable <xref
            href="https://hadoop.apache.org/docs/current/hadoop-aws/tools/hadoop-aws/s3guard.html"
            format="html" scope="external">S3Guard</xref> in your cluster for
          data consistency.</li>
        <li>
          <p> Too many files in a table can make metadata load and update slow
            in S3. If too many requests are made to S3, S3 has a back-off
            mechanism and responds slower than usual.</p>
          <ul>
            <li>If you have many small files due to over-granular partitioning,
              configure partitions with many megabytes of data so that even a
              query against a single partition can be parallelized effectively. </li>
            <li>If you have many small files because of many small
                <codeph>INSERT</codeph> queries, use bulk
                <codeph>INSERT</codeph>s so that more data is written to fewer
              files. </li>
          </ul>
        </li>
      </ul>
    </conbody>
  </concept>

  <concept id="s3_sql">
    <title>How Impala SQL Statements Work with S3</title>
    <conbody>
      <p> Impala SQL statements work with data in S3 as follows: </p>
      <ul>
        <li>
          <p> The <xref href="impala_create_table.xml#create_table">CREATE
              TABLE</xref> or <xref href="impala_alter_table.xml#alter_table"
              >ALTER TABLE</xref> statement can specify that a table resides in
            the S3 object store by encoding an <codeph>s3a://</codeph> prefix
            for the <codeph>LOCATION</codeph> property. <codeph>ALTER
              TABLE</codeph> can also set the <codeph>LOCATION</codeph> property
            for an individual partition so that some data in a table resides in
            S3 and other data in the same table resides on HDFS. </p>
        </li>
        <li>
          <p> Once a table or partition is designated as residing in S3, the
              <xref href="impala_select.xml#select"/> statement transparently
            accesses the data files from the appropriate storage layer. </p>
        </li>
        <li>
          <p>
            If the S3 table is an internal table, the <xref
              href="impala_drop_table.xml#drop_table">DROP TABLE</xref> statement
            removes the corresponding data files from S3 when the table is dropped.
          </p>
        </li>
        <li>
          <p> The <xref href="impala_truncate_table.xml#truncate_table">TRUNCATE
              TABLE</xref> statement always removes the corresponding
            data files from S3 when the table is truncated. </p>
        </li>
        <li>
          <p>
            The <xref href="impala_load_data.xml#load_data">LOAD DATA</xref>
            statement can move data files residing in HDFS into
            an S3 table.
          </p>
        </li>
        <li>
          <p>
            The <xref href="impala_insert.xml#insert">INSERT</xref> statement, or the <codeph>CREATE TABLE AS SELECT</codeph>
            form of the <codeph>CREATE TABLE</codeph> statement, can copy data from an HDFS table or another S3
            table into an S3 table. The <xref
              href="impala_s3_skip_insert_staging.xml#s3_skip_insert_staging">S3_SKIP_INSERT_STAGING</xref>
            query option chooses whether or not to use a fast code path for these write operations to S3,
            with the tradeoff of potential inconsistency in the case of a failure during the statement.
          </p>
        </li>
      </ul>
      <p>
        For usage information about Impala SQL statements with S3 tables, see <xref href="impala_s3.xml#s3_ddl"/>
        and <xref href="impala_s3.xml#s3_dml"/>.
      </p>
    </conbody>
  </concept>

  <concept id="s3_creds">

    <title>Specifying Impala Credentials to Access Data in S3</title>

    <conbody>

      <p> To allow Impala to access data in S3, specify values for the following
        configuration settings in your <filepath>core-site.xml</filepath> file: </p>
<codeblock>
&lt;property&gt;
&lt;name&gt;fs.s3a.access.key&lt;/name&gt;
&lt;value&gt;<varname>your_access_key</varname>&lt;/value&gt;
&lt;/property&gt;
&lt;property&gt;
&lt;name&gt;fs.s3a.secret.key&lt;/name&gt;
&lt;value&gt;<varname>your_secret_key</varname>&lt;/value&gt;
&lt;/property&gt;
</codeblock>

      <p> After specifying the credentials, restart both the Impala and Hive
        services. Restarting Hive is required because Impala statements, such as
          <codeph>CREATE TABLE</codeph>, go through the Hive Metastore. </p>

      <note type="important">
          <p>
            Although you can specify the access key ID and secret key as part of the <codeph>s3a://</codeph> URL in the
            <codeph>LOCATION</codeph> attribute, doing so makes this sensitive information visible in many places, such
            as <codeph>DESCRIBE FORMATTED</codeph> output and Impala log files. Therefore, specify this information
            centrally in the <filepath>core-site.xml</filepath> file, and restrict read access to that file to only
            trusted users.
          </p>
      </note>
      <p>See <xref
          href="https://www.google.com/url?q=https://hadoop.apache.org/docs/current/hadoop-aws/tools/hadoop-aws/index.html%23Authenticating_with_S3&amp;sa=D&amp;ust=1572980027740000&amp;usg=AFQjCNFnzPSfNBMVRgJZRenvhLblezHbdw"
          format="html" scope="external">Authenticating with S3</xref> for
        additional authentication mechanisms to access S3.</p>

    </conbody>

  </concept>

  <concept id="s3_etl">

    <title>Loading Data into S3 for Impala Queries</title>
  <prolog>
    <metadata>
      <data name="Category" value="ETL"/>
      <data name="Category" value="Ingest"/>
    </metadata>
  </prolog>

    <conbody>

      <p>
        If your ETL pipeline involves moving data into S3 and then querying through Impala,
        you can either use Impala DML statements to create, move, or copy the data, or
        use the same data loading techniques as you would for non-Impala data.
      </p>

    </conbody>

    <concept id="s3_dml" rev="2.6.0 IMPALA-1878">
      <title>Using Impala DML Statements for S3 Data</title>
      <conbody>
        <p>The Impala DML statements (<codeph>INSERT</codeph>, <codeph>LOAD
            DATA</codeph>, and <codeph>CREATE TABLE AS SELECT</codeph>) can
          write data into a table or partition that resides in S3. The syntax of
          the DML statements is the same as for any other tables because the S3
          location for tables and partitions is specified by an
            <codeph>s3a://</codeph> prefix in the <codeph>LOCATION</codeph>
          attribute of <codeph>CREATE TABLE</codeph> or <codeph>ALTER
            TABLE</codeph> statements. If you bring data into S3 using the
          normal S3 transfer mechanisms instead of Impala DML statements, issue
          a <codeph>REFRESH</codeph> statement for the table before using Impala
          to query the S3 data.</p>
        <p conref="../shared/impala_common.xml#common/s3_dml_performance"/>
      </conbody>
    </concept>

    <concept id="s3_manual_etl">
      <title>Manually Loading Data into Impala Tables in S3</title>
      <conbody>
        <p>
          As an alternative, or on earlier Impala releases without DML support for S3,
          you can use the Amazon-provided methods to bring data files into S3 for querying through Impala. See
          <xref href="http://aws.amazon.com/s3/" scope="external" format="html">the Amazon S3 web site</xref> for
          details.
        </p>

        <note type="important">
          <p conref="../shared/impala_common.xml#common/s3_drop_table_purge"/>
        </note>

        <p> After you upload data files to a location already mapped to an
          Impala table or partition, or if you delete files in S3 from such a
          location, issue the <codeph>REFRESH</codeph> statement to make Impala
          aware of the new set of data files. </p>

      </conbody>
    </concept>

  </concept>

  <concept id="s3_ddl">

    <title>Creating Impala Databases, Tables, and Partitions for Data Stored in
      S3</title>
  <prolog>
    <metadata>
      <data name="Category" value="Databases"/>
    </metadata>
  </prolog>

    <conbody>
      <p>To create a table that resides in S3, run the <codeph>CREATE
          TABLE</codeph> or <codeph>ALTER TABLE</codeph> statement with the
          <codeph>LOCATION</codeph> clause. </p>
      <p><codeph>ALTER TABLE</codeph> can set the <codeph>LOCATION</codeph>
        property for an individual partition, so that some data in a table
        resides in S3 and other data in the same table resides on HDFS.</p>
      <p>The syntax for the <codeph>LOCATION</codeph> clause is:</p>
      <codeblock>LOCATION 's3a://<varname>bucket_name</varname>/<varname>path</varname>/<varname>to</varname>/<varname>file</varname>'</codeblock>
      <p>The file system prefix is always <codeph>s3a://</codeph>. Impala does
        not support the <codeph>s3://</codeph> or <codeph>s3n://</codeph>
        prefixes. </p>
      <p> For a partitioned table, either specify a separate
          <codeph>LOCATION</codeph> clause for each new partition, or specify a
        base <codeph>LOCATION</codeph> for the table and set up a directory
        structure in S3 to mirror the way Impala partitioned tables are
        structured in S3. </p>

      <p> You point a nonpartitioned table or an individual partition at S3 by
        specifying a single directory path in S3, which could be any arbitrary
        directory. To replicate the structure of an entire Impala partitioned
        table or database in S3 requires more care, with directories and
        subdirectories nested and named to match the equivalent directory tree
        in HDFS. Consider setting up an empty staging area if necessary in HDFS,
        and recording the complete directory structure so that you can replicate
        it in S3.  </p>
      <p> When working with multiple tables with data files stored in S3, you can
        create a database with a <codeph>LOCATION</codeph> attribute pointing to
        an S3 path. Specify a URL of the form
            <codeph>s3a://<varname>bucket</varname>/<varname>root</varname>/<varname>path</varname>/<varname>for</varname>/<varname>database</varname></codeph>
        for the <codeph>LOCATION</codeph> attribute of the database. Any tables
        created inside that database automatically create directories underneath
        the one specified by the database <codeph>LOCATION</codeph> attribute. </p>
      <p>The following example creates a table with one partition for the year
        2017 resides on HDFS and one partition for the year 2018 resides in
        S3.</p>

      <p>The partition for year 2018 includes a <codeph>LOCATION</codeph>
        attribute with an <codeph>s3a://</codeph> URL, and so refers to data
        residing in S3, under a specific path underneath the bucket
          <codeph>impala-demo</codeph>. </p>

<codeblock>CREATE TABLE mostly_on_hdfs (x int) PARTITIONED BY (year INT);
ALTER TABLE mostly_on_hdfs ADD PARTITION (year=2017);
ALTER TABLE mostly_on_hdfs ADD PARTITION (year=2018) 
   LOCATION 's3a://impala-demo/dir1/dir2/dir3/t1';
</codeblock>

      <p> The following session creates a database and two partitioned tables
        residing entirely in S3, one partitioned by a single column and the
        other partitioned by multiple columns. </p>
      <ul>
        <li>Because a <codeph>LOCATION</codeph> attribute with an
            <codeph>s3a://</codeph> URL is specified for the database, the
          tables inside that database are automatically created in S3 underneath
          the database directory. </li>
        <li>To see the names of the associated subdirectories, including the
          partition key values, use an S3 client tool to examine how the
          directory structure is organized in S3. </li>
      </ul>

<codeblock>CREATE DATABASE db_on_s3 LOCATION 's3a://impala-demo/dir1/dir2/dir3';
CREATE TABLE partitioned_multiple_keys (x INT)
   PARTITIONED BY (year SMALLINT, month TINYINT, day TINYINT);

ALTER TABLE partitioned_multiple_keys
   ADD PARTITION (year=2015,month=1,day=1);
ALTER TABLE partitioned_multiple_keys
   ADD PARTITION (year=2015,month=1,day=31);

!hdfs dfs -ls -R s3a://impala-demo/dir1/dir2/dir3
2015-03-17 13:56:34          0 dir1/dir2/dir3/
2015-03-17 16:47:13          0 dir1/dir2/dir3/partitioned_multiple_keys/
2015-03-17 16:47:44          0 dir1/dir2/dir3/partitioned_multiple_keys/year=2015/month=1/day=1/
2015-03-17 16:47:50          0 dir1/dir2/dir3/partitioned_multiple_keys/year=2015/month=1/day=31/</codeblock>

      <p>
        The <codeph>CREATE DATABASE</codeph> and <codeph>CREATE TABLE</codeph> statements create the associated
        directory paths if they do not already exist. You can specify multiple levels of directories, and the
        <codeph>CREATE</codeph> statement creates all appropriate levels, similar to using <codeph>mkdir
        -p</codeph>.
      </p>

      <p> Use the standard S3 file upload methods to put the actual data files
        into the right locations. You can also put the directory paths and data
        files in place before creating the associated Impala databases or
        tables, and Impala automatically uses the data from the appropriate
        location after the associated databases and tables are created. </p>
      <p>Use the <codeph>ALTER TABLE</codeph> statement with the
          <codeph>LOCATION</codeph> clause to switch whether an existing table
        or partition points to data in HDFS or S3. For example, if you have an
        Impala table or partition pointing to data files in HDFS or S3, and you
        later transfer those data files to the other filesystem, use the
          <codeph>ALTER TABLE</codeph> statement to adjust the
          <codeph>LOCATION</codeph> attribute of the corresponding table or
        partition to reflect that change. </p>

    </conbody>

  </concept>

  <concept id="s3_internal_external">

    <title>Internal and External Tables Located in S3</title>

    <conbody>

      <p> Just as with tables located on HDFS storage, you can designate
        S3-based tables as either internal (managed by Impala) or external, by
        using the syntax <codeph>CREATE TABLE</codeph> or <codeph>CREATE
          EXTERNAL TABLE</codeph> respectively. </p>
      <p>When you drop an internal table, the files associated with the table
        are removed, even if they are in S3 storage. When you drop an external
        table, the files associated with the table are left alone, and are still
        available for access by other tools or components.</p>

      <p> If the data in S3 is intended to be long-lived and accessed by other
        tools in addition to Impala, create any associated S3 tables with the
          <codeph>CREATE EXTERNAL TABLE</codeph> syntax, so that the files are
        not deleted from S3 when the table is dropped. </p>

      <p> If the data in S3 is only needed for querying by Impala and can be
        safely discarded once the Impala workflow is complete, create the
        associated S3 tables using the <codeph>CREATE TABLE</codeph> syntax, so
        that dropping the table also deletes the corresponding data files in S3. </p>

    </conbody>

  </concept>

  <concept id="s3_queries">

    <title>Running and Tuning Impala Queries for Data Stored in S3</title>

    <conbody>
      <p> Once a table or partition is designated as residing in S3, the
          <codeph>SELECT</codeph> statement transparently accesses the data
        files from the appropriate storage layer. </p>

      <ul>
        <li>
          Queries against S3 data support all the same file formats as for HDFS data.
        </li>

        <li>
          Tables can be unpartitioned or partitioned. For partitioned tables, either manually construct paths in S3
          corresponding to the HDFS directories representing partition key values, or use <codeph>ALTER TABLE ...
          ADD PARTITION</codeph> to set up the appropriate paths in S3.
        </li>

        <li>
          HDFS and HBase tables can be joined to S3 tables, or S3 tables can be joined with each other.
        </li>

        <li> Authorization to control access to databases, tables, or columns
          works the same whether the data is in HDFS or in S3. </li>
        <li> The Catalog Server (<cmdname>catalogd</cmdname>) daemon caches
          metadata for both HDFS and S3 tables.</li>

        <li>
          Queries against S3 tables are subject to the same kinds of admission control and resource management as
          HDFS tables.
        </li>

        <li> Metadata about S3 tables is stored in the same Metastore database
          as for HDFS tables. </li>

        <li>
          You can set up views referring to S3 tables, the same as for HDFS tables.
        </li>

        <li> The <codeph>COMPUTE STATS</codeph>, <codeph>SHOW TABLE
            STATS</codeph>, and <codeph>SHOW COLUMN STATS</codeph> statements
          work for S3 tables. </li>
      </ul>

    </conbody>

    <concept id="s3_performance">

      <title>Understanding and Tuning Impala Query Performance for S3 Data</title>
  <prolog>
    <metadata>
      <data name="Category" value="Performance"/>
    </metadata>
  </prolog>

      <conbody>

        <p>Here are techniques you can use to interpret explain plans and
          profiles for queries against S3 data, and tips to achieve the best
          performance possible for such queries. </p>

        <p> All else being equal, performance is expected to be lower for
          queries running against data in S3 rather than HDFS. The actual
          mechanics of the <codeph>SELECT</codeph> statement are somewhat
          different when the data is in S3. Although the work is still
          distributed across the DataNodes of the cluster, Impala might
          parallelize the work for a distributed query differently for data on
          HDFS and S3.</p>
        <p>S3 does not have the same block notion as HDFS, so Impala uses
          heuristics to determine how to split up large S3 files for processing
          in parallel. Because all hosts can access any S3 data file with equal
          efficiency, the distribution of work might be different than for HDFS
          data, where the data blocks are physically read using short-circuit
          local reads by hosts that contain the appropriate block replicas.
          Although the I/O to read the S3 data might be spread evenly across the
          hosts of the cluster, the fact that all data is initially retrieved
          across the network means that the overall query performance is likely
          to be lower for S3 data than for HDFS data. </p>
        <p>Use the <codeph>PARQUET_OBJECT_STORE_SPLIT_SIZE</codeph> query option
          to control the Parquet-specific split size. The default value is 256
          MB.</p>

        <p> When optimizing aspects of complex queries, such as the join order,
          Impala treats tables on HDFS and S3 the same way. Therefore, follow
          all the same tuning recommendations for S3 tables as for HDFS ones,
          such as using the <codeph>COMPUTE STATS</codeph> statement to help
          Impala construct accurate estimates of row counts and cardinality. See
            <xref href="impala_performance.xml#performance"/> for details. </p>

        <p> In query profile reports, the numbers for
            <codeph>BytesReadLocal</codeph>,
            <codeph>BytesReadShortCircuit</codeph>,
            <codeph>BytesReadDataNodeCached</codeph>, and
            <codeph>BytesReadRemoteUnexpected</codeph> are blank because those
          metrics come from HDFS. By definition, all the I/O for S3 tables
          involves remote reads. </p>

      </conbody>

    </concept>

  </concept>

  <concept id="s3_restrictions">

    <title>Restrictions on Impala Support for S3</title>

    <conbody>

      <p>The following restrictions apply when using Impala with S3:</p>
      <ul>
        <li> Impala does not support the old <codeph>s3://</codeph> block-based
          and <codeph>s3n://</codeph> filesystem schemes, and it only supports
            <codeph>s3a://</codeph>. </li>
        <li>Although S3 is often used to store JSON-formatted data, the current
          Impala support for S3 does not include directly querying JSON data.
          For Impala queries, use data files in one of the file formats listed
          in <xref href="impala_file_formats.xml#file_formats"/>. If you have
          data in JSON format, you can prepare a flattened version of that data
          for querying by Impala as part of your ETL cycle. </li>
        <li>You cannot use the <codeph>ALTER TABLE ... SET CACHED</codeph>
          statement for tables or partitions that are located in S3. </li>
      </ul>

    </conbody>

  </concept>


</concept>
