Engine SQL de alta performance para consultas interativas em dados do Hadoop
Apache Impala é um engine SQL moderno, open source e distribuído para Apache Hadoop. Projetado para consultas interativas de baixa latência, Impala utiliza arquitetura MPP (Massively Parallel Processing) para fornecer performance superior em análises de dados em tempo real.
Desenvolvido pela Cloudera em 2012 e posteriormente doado à Apache Software Foundation em 2017. Impala foi criado para superar as limitações de latência do Hive, oferecendo consultas SQL interativas em dados armazenados no Hadoop.
Impala utiliza uma arquitetura distribuída com os seguintes componentes:
Processamento paralelo massivo para consultas de alta performance
Processamento em memória para consultas ultra-rápidas
Otimização para formatos colunares como Parquet e ORC
Otimizador de consultas avançado com estatísticas detalhadas
Versão Atual | 4.4.0 |
Linguagem Principal | C++ |
Latência Típica | Segundos a minutos |
Formatos Suportados | Parquet, ORC, Avro, Text, JSON |
Sistemas de Arquivo | HDFS, S3, ADLS |
Consultas ad-hoc e exploração de dados com resposta em segundos.
Dashboards e relatórios em tempo real para tomada de decisão.
Análises self-service para usuários de negócio com interface SQL.
Relatórios em tempo real sobre dados operacionais e transacionais.
-- Consulta otimizada com estatísticas
COMPUTE STATS sales_data;
SELECT
region,
product_category,
SUM(revenue) as total_revenue,
COUNT(DISTINCT customer_id) as unique_customers
FROM sales_data
WHERE sale_date >= '2024-01-01'
AND sale_date < '2024-12-31'
GROUP BY region, product_category
ORDER BY total_revenue DESC
LIMIT 100;
CREATE TABLE sales_partitioned (
transaction_id BIGINT,
customer_id INT,
product_id INT,
revenue DECIMAL(10,2),
sale_timestamp TIMESTAMP
)
PARTITIONED BY (
year INT,
month INT,
region STRING
)
STORED AS PARQUET
LOCATION '/data/sales_partitioned';
-- Usando hints para otimização
SELECT /*+ BROADCAST(d) */
s.product_id,
d.product_name,
SUM(s.revenue) as total_revenue
FROM sales_fact s
JOIN /* +BROADCAST */ product_dim d
ON s.product_id = d.product_id
WHERE s.sale_date >= '2024-01-01'
GROUP BY s.product_id, d.product_name;
-- Verificar plano de execução
EXPLAIN SELECT * FROM large_table WHERE id > 1000;
-- Verificar estatísticas da tabela
SHOW TABLE STATS large_table;
-- Verificar estatísticas das colunas
SHOW COLUMN STATS large_table;
Aspecto | Apache Impala | Apache Hive | Trino | ClickHouse |
---|---|---|---|---|
Latência | Baixa (segundos) | Alta (minutos) | Baixa (segundos) | Muito Baixa (ms) |
Throughput | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
Concorrência | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
Facilidade de Uso | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
Tolerância a Falhas | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |