Tabelas transacionais

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. Definir um número maior pode afetar o desempenho do serviço, especialmente se você estiver no nível do desenvolvedor. Se esse número precisar ser ajustado, 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 Como 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 Hive e transações. É possível usar a sinalização --image-version para definir a imagem do 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.

  1. Conecte-se por SSH ao cluster do Dataproc. Faça isso em um navegador ou na linha de comando.

  2. Execute o comando hive para abrir o cliente Hive:

    $> hive
    
  3. Defina as configurações do lado do cliente para ativar a compatibilidade com Hive ACID para transações na sessão do cliente Hive:

    SET hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
    SET hive.support.concurrency=true;
    SET hive.exec.dynamic.partition.mode=nonstrict;
    
  4. Crie uma tabela transacional para inserir e atualizar. Veja um exemplo abaixo.

    1. Crie uma tabela de transação:

      create table student (id int, name string, age int)
      STORED AS ORC TBLPROPERTIES ('transactional' = 'true');
      
    2. 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.

    3. Insira dados na tabela:

      INSERT INTO student VALUES
      (1, 'Alice', 10),
      (2, 'Bob', 10),
      (3, 'Charlie', 10);
      
      1. 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.
    4. Veja quais compactações estão sendo executadas e os status delas. O metastore do Hive executa uma linha de execução chamada de iniciador a cada cinco minutos para verificar se há tabelas enviadas devido à compactação e se solicita essas compactação.

      show compactions;
      
      1. Para iniciar uma compactação manual (menor ou maior):

          ALTER TABLE student COMPACT 'minor';
          ALTER TABLE student COMPACT 'major';
        

A seguir