O conector Hive consulta e analisa dados armazenados em um data warehouse Hive por meio do Presto.
Um data warehouse Hive é composto por três componentes:
Arquivos de dados em formatos como ORC e Parquet. Esses arquivos geralmente ficam armazenados no Hadoop Distributed File System (HDFS) ou em um sistema de armazenamento de objetos, como o Alibaba Cloud Object Storage Service (OSS).
Metadados que mapeiam os arquivos de dados para schemas e tabelas. Esses metadados residem em um banco de dados, como MySQL, e são acessados via metastore do Hive.
HiveQL, uma linguagem de consulta executada em frameworks de computação distribuída, como MapReduce ou Tez.
O Presto utiliza apenas os arquivos de dados e os metadados, sem usar o HiveQL.
Pré-requisitos
Antes de começar, verifique se você possui:
Um cluster de data lake ou cluster Hadoop com o serviço Presto selecionado. Para mais informações, consulte Criar um cluster.
Limitações
Configure um metastore do Hive antes de configurar o conector Hive.
O conector Hive oferece suporte a HDFS, Alibaba Cloud OSS e sistemas de armazenamento compatíveis com OSS. O nó coordenador e todos os nós workers do Presto precisam ter acesso tanto ao metastore do Hive quanto ao sistema de armazenamento de destino. Por padrão, o acesso ao metastore do Hive ocorre pelo protocolo Thrift na porta 9083.
Configuração
Para modificar a configuração do conector Hive, consulte Configurar conectores.
Configuração padrão
Na página do serviço Presto no console EMR, clique em Configure e, em seguida, clique em hive.properties para visualizar e editar essas propriedades.
|
Propriedade |
Descrição |
Padrão |
|
|
Define se os dados devem ser lidos dos subdiretórios de uma tabela ou partição. Equivalente à propriedade |
- |
|
|
URI para acessar o metastore do Hive via protocolo Thrift. Formato: |
- |
|
|
Lista separada por vírgulas de arquivos de configuração do HDFS. Os arquivos devem existir em todos os hosts do Presto. Defina esta propriedade apenas ao acessar o HDFS. |
- |
|
|
Indica se o Presto pode ler tabelas do Delta Lake. |
|
|
|
Habilita o modo de compatibilidade para tabelas do Delta Lake. |
|
|
|
Ativa a representação de usuário do HDFS. |
- |
Múltiplos clusters Hive
Para conectar o Presto a vários clusters Hive, crie múltiplos arquivos .properties no diretório etc/catalog. O nome do arquivo (sem a extensão) torna-se o nome do catálogo. Por exemplo, um arquivo chamado sales.properties cria um catálogo denominado sales.
Configuração do HDFS
Na maioria dos casos, o Presto configura o cliente HDFS automaticamente. Para federação HDFS ou modo de alta disponibilidade do NameNode, adicione a propriedade hive.config.resources para referenciar os arquivos de configuração necessários do HDFS.
Especifique arquivos de configuração somente quando necessário. Isso minimiza a quantidade de propriedades e reduz o risco de incompatibilidades. Certifique-se de que os arquivos de configuração existam em todos os hosts do Presto. Se você referenciar um arquivo de configuração existente do Hadoop, copie-o para todos os nós do Presto que não executam o Hadoop.
Nome de usuário e permissões do HDFS
Antes de executar CREATE TABLE ou CREATE TABLE AS no Presto, verifique se a conta HDFS do Presto tem permissão para acessar o diretório de warehouse do Hive. O diretório de warehouse é especificado por hive.metastore.warehouse.dir em hive-site.xml. O caminho padrão é /user/hive/warehouse.
Formatos de arquivo suportados
|
Formato de arquivo |
Observações |
|
ORC |
- |
|
Parquet |
- |
|
Avro |
- |
|
RCText |
RCFile que utiliza a classe |
|
RCBinary |
RCFile que utiliza a classe |
|
SequenceFile |
- |
|
JSON |
Utiliza a classe |
|
CSV |
Utiliza a classe |
|
TextFile |
- |
Tipos de tabela suportados
|
Tipo de tabela |
Descrição |
|
Tabela ACID (Atomicidade, Consistência, Isolamento, Durabilidade) |
Com a versão 3.X do metastore do Hive, o conector Hive suporta leitura e escrita em tabelas insert-only e ACID. O particionamento e o bucketing são totalmente suportados. Operações de DELETE e UPDATE no nível de linha são permitidas em tabelas ACID. Colunas de chave de partição e colunas de bucket não podem ser atualizadas. O Hive Streaming Ingest não pode criar tabelas ACID. Para mais informações, consulte Streaming Data Ingest. |
|
View materializada |
O conector Hive lê views materializadas do Hive. No Presto, as views materializadas aparecem como tabelas comuns e somente leitura. |
Views do Hive
As views do Hive são definidas em HiveQL e armazenadas em um metastore do Hive. O conector Hive suporta três modos de visualização: Disabled, Legacy e Experimental.
|
Modo |
Descrição |
|
Disabled |
As views são ignoradas. A lógica de negócios e os dados codificados nas views não ficam visíveis no Presto. Este é o modo padrão. |
|
Legacy |
Adequado para views simples do Hive. Para ativar este modo, defina |
|
Experimental |
Analisa, processa e reescreve as views do Hive, incluindo suas expressões e instruções. Para habilitar este modo, defina |
Propriedades de configuração
Aceleração de consulta JindoTable
Cada cluster EMR possui dois conectores Hive integrados: hive.properties e hive-acc.properties. O conector hive-acc.properties inclui o mecanismo nativo JindoTable, que acelera consultas em arquivos ORC e Parquet. Para mais informações, consulte o tópico sobre aceleração de consulta correspondente à sua versão do SmartData. Por exemplo, se você usa o SmartData 3.6.X, veja Ativar aceleração de consulta baseada em mecanismo nativo.
Propriedades gerais
|
Propriedade |
Descrição |
Padrão |
|
|
Lista separada por vírgulas de arquivos de configuração do HDFS. Os arquivos devem existir em todos os hosts do Presto. Defina esta propriedade apenas ao acessar o HDFS. |
- |
|
|
Define se os dados devem ser lidos dos subdiretórios de uma tabela ou partição. Equivalente à propriedade |
- |
|
|
Determina se uma partição cujo caminho de arquivo não existe deve ser ignorada, em vez de causar falha na consulta. Quando uma partição é ignorada, alguns dados da tabela podem ser omitidos. |
|
|
|
Formato de arquivo padrão para novas tabelas. |
|
|
|
Codec de compressão para escrita de dados. Valores válidos: |
|
|
|
Força o agendamento de splits no nó onde o DataNode armazena os dados do split. Melhora o desempenho quando o Presto está localizado nos mesmos nós dos DataNodes. |
|
|
|
Define se as novas partições usam o formato existente da tabela ( |
|
|
|
Impede a inserção de novos dados em partições existentes. Quando definido como |
|
|
|
Comportamento adotado ao inserir dados em uma partição existente. Valores válidos: |
|
|
|
Cria um arquivo vazio para um bucket que não contém dados. |
|
|
|
Número máximo de partições por writer. |
|
|
|
Quantidade máxima de partições para uma única varredura de tabela. |
|
|
|
Modo de autenticação do HDFS. |
|
|
|
Ativa a representação de usuário do HDFS. |
|
|
|
Principal Kerberos para o Presto se conectar ao HDFS. |
- |
|
|
Caminho do arquivo de chave para o cliente HDFS. |
- |
|
|
Fator de replicação do HDFS. |
- |
|
|
Modo de segurança. Para mais detalhes, consulte Configuração de segurança do conector Hive. |
|
|
|
Caminho do arquivo de configuração de segurança. Obrigatório quando |
- |
|
|
Permite a escrita de dados em tabelas Hive não gerenciadas (externas). |
|
|
|
Permite a criação de tabelas Hive não gerenciadas (externas). |
|
|
|
Coleta automaticamente estatísticas no nível da coluna durante a escrita de dados. |
|
|
|
Tabelas a serem armazenadas em cache. Por exemplo, |
- |
|
|
Número máximo de entradas de status de arquivo em cache. |
|
|
|
Tempo de expiração para listagens de diretórios em cache, em minutos. |
|
|
|
Fuso horário para ajustar valores de timestamp codificados binariamente. Para Hive 3.1 ou posterior, defina como |
Padrão da JVM |
|
|
Precisão para colunas TIMESTAMP do Hive. Valores válidos: |
|
|
|
Usa o diretório temporário de staging especificado por |
|
|
|
Caminho do diretório temporário de staging para escrita de dados. Use o placeholder |
|
|
|
Habilita a tradução de views do Hive. |
|
|
|
Usa o algoritmo legado para tradução de views do Hive. A propriedade de sessão do catálogo |
|
|
|
Aumenta o paralelismo para escritas em tabelas particionadas e com bucketing. Quando definido como |
|
Propriedades ORC
|
Propriedade |
Descrição |
Padrão |
|
|
Fuso horário padrão para arquivos ORC de versões anteriores que não declaram um fuso horário. |
Padrão da JVM |
|
|
Acessa colunas ORC pelo nome em vez de sua posição sequencial na definição da tabela Hive. A propriedade de sessão do catálogo correspondente é |
|
Propriedades Parquet
|
Propriedade |
Descrição |
Padrão |
|
|
Fuso horário para ajustar valores de timestamp. Para Hive 3.1 ou posterior, defina como |
Padrão da JVM |
|
|
Acessa colunas Parquet pelo nome em vez de sua posição sequencial na definição da tabela Hive. Quando definido como |
- |
Propriedades do Metastore
As propriedades abaixo configuram o metastore do Hive. Para propriedades específicas do Thrift, consulte Propriedades do metastore Thrift.
|
Propriedade |
Descrição |
Padrão |
|
|
Tipo de metastore do Hive. O Presto suporta o metastore baseado em Thrift e seus derivados. |
|
|
|
Tempo de vida (TTL) para dados do metastore em cache, em segundos. |
|
|
|
Quantidade máxima de objetos de dados do metastore em cache. |
|
|
|
Intervalo em que os dados do metastore em cache são atualizados assincronamente após o acesso. Apenas dados não expirados são atualizados. |
- |
|
|
Número máximo de threads para atualizar dados do metastore em cache. |
|
|
|
Tempo limite para requisições ao metastore do Hive, em segundos. |
|
Propriedades do metastore Thrift
|
Propriedade |
Descrição |
Padrão |
|
|
URI para acessar o metastore do Hive via protocolo Thrift. Quando múltiplas URIs são especificadas, a primeira é o metastore primário e as demais são secundárias. Obrigatório. Exemplo: |
- |
|
|
Nome de usuário para o Presto acessar o metastore do Hive. |
- |
|
|
Modo de autenticação para o metastore do Hive. |
|
|
|
Habilita a representação de usuário para o metastore do Hive. |
- |
|
|
Tempo de vida do cache de delegation token, em horas. |
|
|
|
Tamanho máximo do cache de delegation token. |
|
|
|
Ativa SSL para a conexão com o metastore do Hive. |
|
|
|
Caminho da chave privada e do certificado do cliente no key store. |
- |
|
|
Senha da chave privada. |
- |
|
|
Caminho da cadeia de certificados do servidor no trust store. Obrigatório quando o SSL está ativado. |
- |
|
|
Senha da cadeia de certificados do servidor. |
- |
|
|
Principal Kerberos do serviço de metastore do Hive. |
- |
|
|
Principal Kerberos para o Presto se conectar ao metastore do Hive. |
- |
|
|
Caminho do arquivo keytab no cliente do metastore do Hive. |
- |
Propriedades de ajuste de desempenho
Modificar os valores padrão dessas propriedades pode causar instabilidade ou degradação de desempenho. Proceda com cautela.
|
Propriedade |
Descrição |
Padrão |
|
|
Número máximo de splits em cache por varredura de tabela antes que o agendador pause. |
|
|
|
Quantidade máxima de splits gerados por segundo para cada varredura de tabela. Limita a carga no sistema de armazenamento. |
Sem limite |
|
|
Número máximo de splits iniciais. O coordenador atribui esses primeiros, cada um com até |
|
|
|
Tamanho máximo de cada split inicial atribuído a um nó worker. Splits menores aumentam o paralelismo e aceleram consultas pequenas. |
|
|
|
Tamanho máximo de um único split atribuído a um nó worker. Splits menores aumentam o paralelismo, mas também elevam a sobrecarga e a carga do sistema. |
|
Estatísticas de tabela
O conector Hive coleta e gerencia estatísticas de tabela para melhorar o desempenho das consultas.
Durante a escrita de dados, o conector coleta automaticamente estatísticas básicas: contagem de arquivos, contagem de linhas, tamanho bruto dos dados e tamanho total dos dados. Ele também coleta as seguintes estatísticas no nível da coluna.
|
Tipo de coluna |
Estatísticas coletadas |
|
TINYINT |
Contagem de nulos, contagem de distintos, valores mín/máx |
|
SMALLINT |
Contagem de nulos, contagem de distintos, valores mín/máx |
|
INTEGER |
Contagem de nulos, contagem de distintos, valores mín/máx |
|
BIGINT |
Contagem de nulos, contagem de distintos, valores mín/máx |
|
DOUBLE |
Contagem de nulos, contagem de distintos, valores mín/máx |
|
REAL |
Contagem de nulos, contagem de distintos, valores mín/máx |
|
DECIMAL |
Contagem de nulos, contagem de distintos, valores mín/máx |
|
DATE |
Contagem de nulos, contagem de distintos, valores mín/máx |
|
TIMESTAMP |
Contagem de nulos, contagem de distintos, valores mín/máx |
|
VARCHAR |
Contagem de nulos, contagem de distintos |
|
CHAR |
Contagem de nulos, contagem de distintos |
|
VARBINARY |
Contagem de nulos |
|
BOOLEAN |
Contagem de nulos, contagens de verdadeiro/falso |