O JindoTable fornece os comandos archiveTable e unarchiveTable no modo SDK. Use esses comandos para arquivar e restaurar dados sem depender do Jindo Namespace Service. Este tópico descreve como usar os comandos archiveTable e unarchiveTable.
Pré-requisitos
Java Development Kit (JDK) 8 instalado localmente.
Cluster criado. Para obter mais informações, consulte Crie um cluster.
Os dados a serem arquivados devem estar em uma tabela (particionada ou não particionada) armazenada no Alibaba Cloud Object Storage Service (OSS).
Informações básicas
Os comandos originais de arquivamento e desarquivamento do JindoTable permitem arquivar ou restaurar tabelas e partições no OSS. No entanto, eles dependem do Jindo Namespace Service do componente SmartData. Os novos comandos archiveTable e unarchiveTable executam essas operações sem essa dependência.
As principais diferenças entre os novos comandos archiveTable e unarchiveTable e os comandos originais são:
É possível executar os comandos em clusters onde o service SmartData não está implantado, como um cluster autogerenciado que não seja um cluster EMR.
É possível passar parâmetros de filtro para aplicar a operação a várias partições e executá-la com multithreading. Se o multithreading local for insuficiente, inicie um job MapReduce para executar a tarefa em todo o cluster.
Para obter mais informações sobre os comandos originais de arquivamento e desarquivamento, consulte JindoTable user guide.
Limites
Os novos comandos archiveTable e unarchiveTable têm suporte em clusters das versões EMR V3.36.0 ou posterior e EMR V5.2.0 ou posterior.
O comando archiveTable
O comando archiveTable arquiva tabelas ou partições no OSS.
Faça login no cluster usando o protocolo Secure Shell (SSH). Para obter mais informações, consulte Log on to a cluster.
-
Execute o seguinte comando para obter informações de ajuda.
jindo table -help archiveTableAs seguintes informações são retornadas.
<dbName.tableName> The table to archive. -a/-i storage policy, -a for Archive and -i for IA (Infrequent Access). <condition>/-fullTable A filter condition to determine which partitions should be archived, supporting common operators (like '>'), while -fullTable means that all partitions (or a whole un-partitioned table) should be archived. One but only one option must be specified among -c "<condition>" and -fullTable. <before days> Optional, saying that table/partitions should be archived only when they are created (not updated or modified) more than some days before from now. <parallelism> The maximum concurrency when archiving partitions, 1 by default. -mr/-mapReduce Archive table/partitions using cluster-level MapReduce job instead of local-level multi-thread. -e/-explain If present, the command would not really archive data, but only prints the table/partitions that would be archived for given conditions. <working directory>: A directory to locate map-reduce temp files. Must not be a local file system directory. 'hdfs:///tmp/<current user>/jindotable-policy/' by default. <log directory> A directory to locate log files, '/tmp/<current user>/' by default.A sintaxe do comando archiveTable é a seguinte.
-archiveTable -t <dbName.tableName> \ -a/-i \ [-c "<condition>" | -fullTable] \ [-b/-before <before days>] \ [-p/-parallel <parallelism>] \ [-mr/-mapReduce] \ [-e/-explain] \ [-w/-workingDir <working directory>] \ [-l/-logDir <log directory>]Parâmetro Descrição Obrigatório -t <dbName.tableName> Nome da tabela a ser arquivada. O formato é database_name.table_name.Use um ponto (.) para separar o nome do banco de dados e o nome da tabela. A tabela pode ser particionada ou não particionada.
Sim -a/-i Classe de armazenamento de destino. Há suporte às seguintes opções: -a: Archive Storage.-i: Armazenamento Infrequent Access (IA).
Se você especificar -i para armazenamento IA, os arquivos que já estão no Archive Storage serão ignorados.
Sim -c "<condition>" | -fullTable -fullTableou-c "<condition>".- Ao especificar
-fullTable, toda a tabela é movida. A tabela pode ser particionada ou não particionada. - Ao especificar
-c "<condition>", uma condição de filtro seleciona as partições a serem movidas. Há suporte a operadores comuns, como o sinal de maior que (>).Por exemplo, para uma coluna de chave de partição
dsdo tipo de dados String, se quiser selecione partições onde o nome da partição seja maior que 'd', use-c " ds > 'd' ".
Não -b/before <before days> Arquiva apenas tabelas ou partições criadas há mais dias do que o número especificado. Não -p/-parallel <parallelism> Grau de paralelismo para a operação de arquivamento. Não -mr/-mapReduce Usa Hadoop MapReduce em vez de multithreading local para arquivar dados. Não -e/-explain Quando esta opção está presente, o comando executa no modo de explicação. Ele exibe apenas a lista de partições a serem movidas, sem mover nenhum dado efetivamente. Não -w/-workingDir Uso exclusivo para jobs MapReduce. Especifique o diretório de trabalho para o job MapReduce. É necessário ter permissões de leitura e gravação no diretório. O diretório de trabalho pode conter arquivos. Arquivos temporários são criados durante a execução do job e limpos após a conclusão. Não -l/-logDir <log directory> Define o diretório para arquivos de log. Não
O comando unarchiveTable
O comando unarchiveTable tem um formato semelhante ao do comando archiveTable e realiza a operação inversa, restaurando tabelas ou partições no OSS.
Faça login no cluster usando o protocolo SSH. Para obter mais informações, consulte Log on to a cluster.
-
Execute o seguinte comando para obter informações de ajuda.
jindo table -help unarchiveTableAs seguintes informações são retornadas.
<dbName.tableName> The table to unarchive. -i unarchive to IA (Infrequent Access). -o restore to make archived data accessible temporarily. <condition>/-fullTable A filter condition to determine which partitions should be unarchived, supporting common operators (like '>'), while -fullTable means that all partitions (or a whole un-partitioned table) should be unarchived. One but only one option must be specified among -c "<condition>" and -fullTable. <before days> Optional, saying that table/partitions should be unarchived only when they are created (not updated or modified) more than some days before from now. <parallelism> The maximum concurrency when unarchiving partitions, 1 by default. -mr/-mapReduce Unarchive table/partitions using cluster-level MapReduce job instead of local-level multi-thread. -e/-explain If present, the command would not really unarchive data, but only prints the table/partitions that would be unarchived for given conditions. <working directory>: A directory to locate map-reduce temp files. Must not be a local file system directory. 'hdfs:///tmp/<current user>/jindotable-policy/' by default. <log directory> A directory to locate log files, '/tmp/<current user>/' by default.A sintaxe do comando unarchiveTable é a seguinte.
-unarchiveTable -t <dbName.tableName> \ [-i/-o] \ [-c "<condition>" | -fullTable] \ [-b/-before <before days>] \ [-p/-parallel <parallelism>] \ [-mr/-mapReduce] \ [-e/-explain] \ [-w/-workingDir <working directory>] \ [-l/-logDir <log directory>]
Os parâmetros do comando unarchiveTable são quase idênticos aos do comando archiveTable. A principal diferença é que o parâmetro obrigatório -a/-i é substituído pelo parâmetro opcional -i/-o.
O parâmetro opcional
-i/-o
funciona da seguinte forma:
Sem a especificação do parâmetro -i/-o, a classe de armazenamento é convertida para Standard.
Ao usar o parâmetro -i, a classe de armazenamento é convertida para Infrequent Access (IA). Arquivos que já estão na classe Standard são ignorados.
Com o parâmetro -o, apenas uma operação de restauração é realizada. Arquivos nas classes Standard ou IA são ignorados. Arquivos já restaurados também são ignorados para evitar restaurações repetidas.