blob: 1863affc4c9385e47084b95e02ed8114c79e769d [file] [log] [blame]
<?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
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
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 rev="2.0.0" id="compression_codec">
<title>COMPRESSION_CODEC Query Option (<keyword keyref="impala20"/> or higher only)</title>
<titlealts audience="PDF"><navtitle>COMPRESSION_CODEC</navtitle></titlealts>
<data name="Category" value="Impala"/>
<data name="Category" value="Impala Query Options"/>
<data name="Category" value="Compression"/>
<data name="Category" value="File Formats"/>
<data name="Category" value="Parquet"/>
<data name="Category" value="Snappy"/>
<data name="Category" value="Gzip"/>
<data name="Category" value="Zstd"/>
<data name="Category" value="Lz4"/>
<data name="Category" value="Developers"/>
<data name="Category" value="Data Analysts"/>
<!-- The initial part of this paragraph is copied straight from the #parquet_compression topic. -->
<!-- Could turn into a conref. -->
<p rev="2.0.0">
<indexterm audience="hidden">COMPRESSION_CODEC query option</indexterm>
When Impala writes Parquet data files using the <codeph>INSERT</codeph> statement, the underlying compression
is controlled by the <codeph>COMPRESSION_CODEC</codeph> query option.
Prior to Impala 2.0, this option was named <codeph>PARQUET_COMPRESSION_CODEC</codeph>. In Impala 2.0 and
later, the <codeph>PARQUET_COMPRESSION_CODEC</codeph> name is not recognized. Use the more general name
<codeph>COMPRESSION_CODEC</codeph> for new code.
<p conref="../shared/impala_common.xml#common/syntax_blurb"/>
<codeblock>SET COMPRESSION_CODEC=<varname>codec_name</varname>; // Supported for all codecs.
SET COMPRESSION_CODEC=<varname>codec_name</varname>:<varname>compression_level</varname>; // Only supported for ZSTD.
The allowed values for this query option are <codeph>SNAPPY</codeph> (the default), <codeph>GZIP</codeph>,
<codeph>ZSTD</codeph>, <codeph>LZ4</codeph>, and <codeph>NONE</codeph>.
<codeph>ZSTD</codeph> also supports setting a compression level. The lower the level, the faster the speed at
the cost of compression ratio. Compression levels from 1 up to 22 are supported for <codeph>ZSTD</codeph>.
The default compression level 3 is used, if one is not passed using the <codeph>compression_codec</codeph>
query option.
A Parquet file created with <codeph>COMPRESSION_CODEC=NONE</codeph> is still typically smaller than the
original data, due to encoding schemes such as run-length encoding and dictionary encoding that are applied
separately from compression.
The option value is not case-sensitive.
If the option is set to an unrecognized value, all kinds of queries will fail due to the invalid option
setting, not just queries involving Parquet tables. (The value <codeph>BZIP2</codeph> is also recognized, but
is not compatible with Parquet tables.)
<b>Type:</b> <codeph>STRING</codeph>
<b>Default:</b> <codeph>SNAPPY</codeph>
<p conref="../shared/impala_common.xml#common/example_blurb"/>
set compression_codec=lz4;
insert into parquet_table_lz4_compressed select * from t1;
set compression_codec=zstd; // Default compression level 3.
insert into parquet_table_zstd_default_compressed select * from t1;
set compression_codec=zstd:12; // Compression level 12.
insert into parquet_table_zstd_highly_compressed select * from t1;
set compression_codec=gzip;
insert into parquet_table_highly_compressed select * from t1;
set compression_codec=snappy;
insert into parquet_table_compression_plus_fast_queries select * from t1;
set compression_codec=none;
insert into parquet_table_no_compression select * from t1;
set compression_codec=foo;
select * from t1 limit 5;
ERROR: Invalid compression codec: foo
<p conref="../shared/impala_common.xml#common/related_info"/>
For information about how compressing Parquet data files affects query performance, see
<xref href="impala_parquet.xml#parquet_compression"/>.