Otimizar uma carga em massa do Amazon Neptune - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Otimizar uma carga em massa do Amazon Neptune

Use as seguintes estratégias para reduzir ao mínimo o tempo de carregamento de uma carga em massa do Neptune:

  • Limpe os dados:

    • Converta os dados em um formato de dados compatível antes de carregá-los.

    • Remova todas as duplicações ou erros conhecidos.

    • Reduza o número de predicados exclusivos (como propriedades de bordas e vértices) o máximo possível.

  • Otimize os arquivos:

    • Se você carregar arquivos grandes, como arquivos CSV, de um bucket do Amazon S3, o carregador gerenciará a simultaneidade para você, analisando-os em partes que poderão ser carregadas paralelamente. Usar um número muito grande de arquivos pequenos pode retardar esse processo.

    • Se você carregar vários arquivos de um prefixo do Amazon S3, o carregador carrega automaticamente os arquivos de vértice primeiro e depois os arquivos de borda. No entanto, se você souber que só carregará arquivos de borda, edgeOnlyLoad pode ser configurado TRUE para pular a primeira passagem em que todos os arquivos são digitalizados para determinar seu conteúdo (vértices ou bordas) para que todos os arquivos de vértice encontrados sejam carregados antes de qualquer arquivo de borda. Isso pode acelerar significativamente o tempo de carregamento, especialmente quando muitos arquivos de borda estão envolvidos. Caso alguns arquivos de vértice também estejam presentes no mesmo prefixo source (parâmetro) do Amazon S3, eles serão carregados, mas sem nenhuma garantia de ordenação em relação a outros arquivos. Além disso, se alguns from ou to vértices não estiverem presentes no banco de dados, a inserção da borda poderá relatar erros na mensagem. FROM_OR_TO_VERTEX_ARE_MISSING Como melhor prática, coloque nós e bordas em um prefixo separado do Amazon S3.

  • Confira as configurações do carregador:

    • Se você não precisar realizar nenhuma outra operação durante o carregamento, use o parâmetro OVERSUBSCRIBE parallelism. Essa configuração de parâmetro faz com que o carregador em massa use todos os recursos de CPU disponíveis ao ser executado. Geralmente, é necessária de 60% a 70% da capacidade da CPU para manter a operação funcionando tão rápido quanto I/O as restrições permitirem.

      nota

      Quando parallelism é definido como OVERSUBSCRIBE ou HIGH (a configuração padrão), há o risco de, ao carregar dados do openCypher, que os threads encontrem uma condição de corrida e um deadlock, gerando um erro LOAD_DATA_DEADLOCK. Nesse caso, defina parallelism como uma configuração mais baixa e repita o carregamento.

    • Se o trabalho de carregamento incluir várias solicitações de carregamento, use o parâmetro queueRequest. A configuração de queueRequest como TRUE permite que o Neptune coloque suas solicitações na fila para que você não precise esperar que uma termine antes de emitir outra.

    • Se suas solicitações de carregamento estiverem sendo colocadas na fila, você poderá configurar níveis de dependência usando o parâmetro dependencies, para que a falha de um trabalho cause falhas nos trabalhos dependentes. Isso pode evitar inconsistências nos dados carregados.

    • Se um trabalho de carregamento envolver a atualização de valores carregados anteriormente, defina o parâmetro updateSingleCardinalityProperties como TRUE. Caso contrário, o carregador tratará uma tentativa de atualizar um valor de cardinalidade único existente como um erro. No caso de dados do Gremlin, a cardinalidade também é especificada nos cabeçalhos de coluna de propriedades (consulte Cabeçalhos de coluna de propriedade).

      nota

      O parâmetro updateSingleCardinalityProperties não está disponível para dados do Resource Description Framework (RDF).

    • É possível usar o parâmetro failOnError para determinar se as operações de carregamento em massa devem falhar ou continuar quando um erro for encontrado. Além disso, você pode usar o parâmetro mode para garantir que uma tarefa de carregamento seja retomada a partir do ponto em que uma tarefa anterior falhou, em vez de recarregar dados que já haviam sido carregados.

  • Aumentar a escala verticalmente: defina a instância de gravador do cluster de banco de dados como o tamanho máximo antes do carregamento em massa. Observe que, se você fizer isso, também deverá aumentar a escala verticalmente de todas as instâncias de réplica de leitura no cluster de banco de dados ou removê-las até terminar de carregar os dados.

    Quando o carregamento em massa estiver concluído, não se esqueça de reduzir a escala verticalmente da instância de gravador novamente.

Importante

Se você tiver um ciclo de reinicializações repetidas de réplica de leitura em virtude do atraso na replicação durante o carregamento em massa, é provável que as réplicas não consigam acompanhar o gravador no cluster de banco de dados. Escale os leitores para serem maiores do que o gravador ou remova-os temporariamente durante o carregamento em massa e, depois, recrie-os após a conclusão.

Consulte Parâmetros da solicitação para obter mais detalhes sobre como definir os parâmetros de solicitação do carregador.