Etapa 2: Prepare os dados para upload usando o DSBulk - Amazon Keyspaces (para Apache Cassandra)

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á.

Etapa 2: Prepare os dados para upload usando o DSBulk

Preparar os dados de origem para uma transferência eficiente é um processo de duas etapas. Primeiro, você randomiza os dados. Na segunda etapa, você analisa os dados para determinar os valores de parâmetros dsbulk apropriados e as configurações de tabela necessárias.

Randomizar os dados

O comando dsbulk lê e grava dados na mesma ordem em que aparecem no arquivo CSV. Se você usar o comando dsbulk para criar o arquivo de origem, os dados serão gravados em ordem de classificação por chave no CSV. Internamente, o Amazon Keyspaces particiona os dados usando chaves de partição. Embora o Amazon Keyspaces tenha uma lógica integrada para ajudar a balancear a carga de solicitações para a mesma chave de partição, carregar os dados é mais rápido e eficiente se você randomizar o pedido. Isso ocorre porque você pode aproveitar o balanceamento de carga incorporado que ocorre quando o Amazon Keyspaces está gravando em partições diferentes.

Para distribuir uniformemente as gravações pelas partições, você deve randomizar os dados no arquivo de origem. Você pode escrever um aplicativo para fazer isso ou usar uma ferramenta de código aberto, como o Shuf. O Shuf está disponível gratuitamente em distribuições do Linux, no macOS (instalando coreutils no homebrew) e no Windows (usando o Subssistema Windows para Linux (WSL)). É necessária uma etapa extra para evitar que a linha do cabeçalho com os nomes das colunas sejam embaralhados nessa etapa.

Para randomizar o arquivo de origem enquanto preserva o cabeçalho, insira o código a seguir.

tail -n +2 keyspaces_sample_table.csv | shuf -o keyspace.table.csv && (head -1 keyspaces_sample_table.csv && cat keyspace.table.csv ) > keyspace.table.csv1 && mv keyspace.table.csv1 keyspace.table.csv

O Shuf reescreve os dados em um novo arquivo CSV chamado keyspace.table.csv. Agora você pode excluir o arquivo keyspaces_sample_table.csv — ele não é mais necessário.

Analisar os dados

Determine o tamanho médio e máximo da linha analisando os dados.

Você pode fazer isso pelas seguintes razões:

  • O tamanho médio da linha ajuda a estimar a quantidade total de dados a serem transferidos.

  • Você precisa do tamanho médio da linha para provisionar a capacidade de gravação necessária para o upload dos dados.

  • Você pode garantir que cada linha tenha menos de 1 MB, que é o tamanho máximo da linha no Amazon Keyspaces.

nota

Essa cota se refere ao tamanho da linha, não ao tamanho da partição. Diferentemente das partições do Apache Cassandra, as partições do Amazon Keyspaces podem ser virtualmente desvinculadas em tamanho. As chaves de partição e as colunas de clustering exigem armazenamento adicional para metadados, que você deve adicionar ao tamanho bruto das linhas. Para ter mais informações, consulte Como calcular o tamanho da linha no Amazon Keyspaces.

O código a seguir usa AWK para analisar um arquivo CSV e imprimir o tamanho médio e máximo da linha.

awk -F, 'BEGIN {samp=10000;max=-1;}{if(NR>1){len=length($0);t+=len;avg=t/NR;max=(len>max ? len : max)}}NR==samp{exit}END{printf("{lines: %d, average: %d bytes, max: %d bytes}\n",NR,avg,max);}' keyspace.table.csv

A execução desse código resulta na saída a seguir.

using 10,000 samples: {lines: 10000, avg: 123 bytes, max: 225 bytes}

Certifique-se de que o tamanho máximo da linha não exceda 1 MB. Se isso acontecer, você precisará dividir a linha ou compactar os dados para reduzir o tamanho da linha para menos de 1 MB. Na próxima etapa deste tutorial, você usa o tamanho médio da linha para provisionar a capacidade de gravação da tabela.