Usar tabelas transacionais com o Dataproc Metastore
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
As transações com semântica de 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 como true, 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 como true 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 como org.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:
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.
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.
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';
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-04 UTC."],[[["\u003cp\u003eApache Hive metastores in Dataproc Metastore support transactions with ACID semantics, enabled by default on Hive 3.\u003c/p\u003e\n"],["\u003cp\u003eServer-side configurations for transaction support, such as \u003ccode\u003emetastore.compactor.initiator.on\u003c/code\u003e and \u003ccode\u003emetastore.compactor.worker.threads\u003c/code\u003e, are set by default during Dataproc Metastore service creation.\u003c/p\u003e\n"],["\u003cp\u003eClient-side configurations like \u003ccode\u003ehive.support.concurrency\u003c/code\u003e, \u003ccode\u003ehive.exec.dynamic.partition.mode\u003c/code\u003e, and \u003ccode\u003ehive.txn.manager\u003c/code\u003e must be set in the Hive client to enable transactions.\u003c/p\u003e\n"],["\u003cp\u003eYou can validate Hive transactions using a Dataproc cluster with Hive 3, ensuring the cluster and Dataproc Metastore service are in the same project.\u003c/p\u003e\n"],["\u003cp\u003eThe Enterprise tier supports managed asynchronous compactions, which is accessible through the Canary release channel.\u003c/p\u003e\n"]]],[],null,["# Use transactional tables with Dataproc Metastore\n\nTransactions with ACID semantics is supported by [Apache Hive](https://hive.apache.org/)\nmetastores in Dataproc Metastore. For more information, see [Hive Transactions](https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions#HiveTransactions-ACIDandTransactionsinHive).\nThese transactions are enabled by default on Hive 3.\n| **Note:** The `Enterprise` tier supports fully managed asynchronous compaction workflows, which is accessible through the [`Canary` release channel](/dataproc-metastore/docs/release-channel).\n\nConfigurations\n--------------\n\nYou must set server and client side configurations in order to enable\ntransaction support.\n| **Note:** These configurations are set by default for Dataproc Metastore services created with Hive version 3.1.2.\n\n### Server side configurations\n\nThe following server side configurations are set by default during the creation\nof the service by Dataproc Metastore. You can choose to override\nthese by entering **Key** and **Value** overrides under **Metastore config\noverrides**.\n| **Caution:** Changing these configurations while creating a Hive 3 Dataproc Metastore service may result in unexpected errors or cause the service to not work correctly.\n\n- **`metastore.compactor.initiator.on`** --- Whether to run the initiator\n and cleaner threads on the Dataproc Metastore service.\n\n Set to `true` to enable the initiator.\n- **`metastore.compactor.worker.threads`** --- The number of compactor\n worker threads to run on the Dataproc Metastore.\n\n Set to a positive number to enable the compactor. Setting this to a higher\n number may affect the performance of the service, especially if you're on\n Developer tier. If this number needs to be tweaked, we recommend using a lower\n value, such as 8.\n- **`hive.metastore.event.db.notification.api.auth`** --- Whether the\n Dataproc Metastore service should authorize against database\n notification related APIs.\n\n Set to `false`. If set to `true`, then only the superusers in proxy\n settings have permission. See [Metastore notification API security](https://cwiki.apache.org/confluence/display/Hive/HiveReplicationv2Development#HiveReplicationv2Development-MetastorenotificationAPIsecurity)\n for more information on superuser proxy privilege.\n\n### Client side configurations\n\nClient side configurations are set in the Hive client as described in\n[Validate transactions](#validate-transactions).\n\n- **`hive.support.concurrency`** --- Set to `true` to support insert,\n update, and delete transactions.\n\n- **`hive.exec.dynamic.partition.mode`** --- In strict mode, you must\n specify at least one static partition in case all partitions are accidentally\n overwritten. In nonstrict mode, all partitions are allowed to be dynamic.\n\n Set to `nonstrict` to support insert, update, and delete transactions.\n- **`hive.txn.manager`** --- Set to `org.apache.hadoop.hive.ql.lockmgr.DbTxnManager`.\n\nValidate transactions\n---------------------\n\nYou can validate Hive transactions using a Dataproc cluster that uses a\nDataproc Metastore service on Hive 3.\n\nYou must create the Dataproc cluster in the same project as the\nDataproc Metastore service and with Hive 3. The Dataproc\n2.0 images, 2.0-ubuntu18 and 2.0-debian10, support Hive 3 and transactions. You\ncan use the flag `--image-version` to set the 2.0 image. For example: \n\n gcloud dataproc clusters create \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eDATAPROC_CLUSTER_ID\u003c/span\u003e\u003c/var\u003e \\\n --dataproc-metastore=projects/\u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003ePROJECT_ID\u003c/span\u003e\u003c/var\u003e/locations/\u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eLOCATION\u003c/span\u003e\u003c/var\u003e/services/\u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eSERVICE\u003c/span\u003e\u003c/var\u003e \\\n --region=\u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eREGION\u003c/span\u003e\u003c/var\u003e \\\n --image-version 2.0-debian10\n\nThe following instructions demonstrate how to validate transactions in your\nDataproc Metastore service that is used by a Dataproc\ncluster.\n\n1. SSH into the Dataproc cluster. You can do this from either a\n browser or from the command line.\n\n2. Run the command `hive` to open the Hive client:\n\n $\u003e hive\n\n3. Set up the client side configurations to enable Hive ACID support for\n transactions in the hive client session:\n\n SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;\n SET hive.support.concurrency=true;\n SET hive.exec.dynamic.partition.mode=nonstrict;\n\n4. Create a transactional table to insert and update into. The following is an\n example.\n\n 1. Create a transaction table:\n\n create table student (id int, name string, age int)\n STORED AS ORC TBLPROPERTIES ('transactional' = 'true');\n\n 2. Check if the table is transactional:\n\n describe formatted \u003ctableName\u003e;\n\n A list of the table properties are printed. A transactional table has\n `transactional=true` in its table parameters.\n 3. Insert data into the table:\n\n INSERT INTO student VALUES\n (1, 'Alice', 10),\n (2, 'Bob', 10),\n (3, 'Charlie', 10);\n\n 1. Observe the delta folder created under the `student` directory in the warehouse directory of the service. Multiple delta folders are created if you run multiple insert or update statements.\n 4. View which compactions are running and their statuses. Hive metastore runs\n a thread called initiator every five minutes to check for tables which are\n due for compaction and requests compaction for those tables.\n\n show compactions;\n\n 1. To start a manual compaction (either minor or major):\n\n ALTER TABLE student COMPACT 'minor';\n ALTER TABLE student COMPACT 'major';\n\nWhat's next\n-----------\n\n- [Create a service](/dataproc-metastore/docs/create-service)\n- [Update and delete a service](/dataproc-metastore/docs/manage-service)\n- [Import metadata into a service](/dataproc-metastore/docs/import-metadata)"]]