As transações com semântica ACID são compatíveis com o Apache Hive no Metastore do Dataproc. Para saber mais informações, consulte Transações do Hive. Essas transações são ativadas por padrão no Hive 3.
.Configurações
Defina as configurações do servidor e do lado do cliente para ativar o suporte à transação.
Configurações do servidor
As configurações do lado do servidor a seguir são definidas por padrão durante a criação do serviço pelo Dataproc Metastore. É possível optar por substituí-las inserindo modificações de chave e valor em Modificações de configuração do metastore
metastore.compactor.initiator.on
: para executar os threads inicial e mais limpo no serviço Metastore do Dataproc.Defina como
true
para ativar o iniciador.metastore.compactor.worker.threads
: o número de linhas de execução de worker compactos ou a serem executadas no metastore do Dataproc.Defina como um número positivo para ativar o compressor. A definição de um número maior pode afetar o desempenho do serviço, especialmente se você estiver no Nível de desenvolvedor. Se for necessário ajustar esse número, recomendamos usar um valor menor, como 8.
hive.metastore.event.db.notification.api.auth
: se o serviço Metastore do Dataproc precisa autorizar contra as APIs relacionadas às notificações do banco de dados.Defina como
false
. Se definido comotrue
, apenas os superusuários nas configurações de proxy terão permissão. Consulte Segurança da API de notificação do Metastore para mais informações sobre o privilégio de proxy do superusuário.
Configurações do cliente
As configurações do cliente são definidas no cliente Hive, conforme descrito em Validar transações.
hive.support.concurrency
: defina comotrue
para aceitar transações de inserção, atualização e exclusão.hive.exec.dynamic.partition.mode
: no modo estrito, especifique pelo menos uma partição estática caso todas as partições sejam substituídas acidentalmente. Nesse modo, todas as partições podem ser dinâmicas.Defina como
nonstrict
para oferecer compatibilidade com a inserção, atualização e exclusão de transações.hive.txn.manager
: Defina comoorg.apache.hadoop.hive.ql.lockmgr.DbTxnManager
.
Validar transações
Você pode validar transações do Hive usando um cluster do Dataproc que usa um serviço do metastore do Dataproc no Hive 3.
Você precisa criar o cluster do Dataproc no mesmo projeto que o serviço Metastore do Dataproc e com o Hive 3. As imagens do Dataproc 2.0, 2.0-ubuntu18 e 2.0-debian10, são compatíveis com o Hive 3 e as transações. É possível usar a sinalização --image-version
para definir a imagem 2.0. Exemplo:
gcloud dataproc clusters create DATAPROC_CLUSTER_ID \
--dataproc-metastore=projects/PROJECT_ID/locations/LOCATION/services/SERVICE \
--region=REGION \
--image-version 2.0-debian10
As instruções a seguir demonstram como validar transações no serviço Metastore do Dataproc usado por um cluster do Dataproc.
Conecte-se por SSH ao cluster do Dataproc. Faça isso em um navegador ou na linha de comando.
Execute o comando
hive
para abrir o cliente Hive:$> hive
Defina as configurações do cliente para ativar o suporte ACID do Hive para transações na sessão do cliente do Hive:
SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; SET hive.support.concurrency=true; SET hive.exec.dynamic.partition.mode=nonstrict;
Crie uma tabela transacional para inserir e atualizar. Veja um exemplo abaixo.
Crie uma tabela de transações:
create table student (id int, name string, age int) STORED AS ORC TBLPROPERTIES ('transactional' = 'true');
Verifique se a tabela é transacional:
describe formatted <tableName>;
Uma lista das propriedades da tabela será impressa. Uma tabela transacional tem
transactional=true
nos parâmetros dela.Insira dados na tabela:
INSERT INTO student VALUES (1, 'Alice', 10), (2, 'Bob', 10), (3, 'Charlie', 10);
- Observe a pasta delta criada no diretório
student
no diretório de utensílios do serviço. Várias pastas delta serão criadas se você executar várias instruções de inserção ou atualização.
- Observe a pasta delta criada no diretório
Veja quais compactações estão sendo executadas e os status delas. O metastore do Hive executa uma linha de execução chamada iniciador a cada cinco minutos para verificar as tabelas que estão devidas para a compactação e solicita a compactação para essas tabelas.
show compactions;
Para iniciar uma compactação manual (menor ou maior):
ALTER TABLE student COMPACT 'minor'; ALTER TABLE student COMPACT 'major';