As transações com semântica ACID são compatíveis com os metastores do 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';