Etapa 2: Preparar os dados de origem para um upload de dados bem-sucedido - 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: Preparar os dados de origem para um upload de dados bem-sucedido

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 cqlsh parâmetros apropriados e as configurações de tabela necessárias para garantir que o upload dos dados seja bem-sucedido.

Randomizar os dados

O cqlsh COPY FROM comando lê e grava dados na mesma ordem em que aparecem no CSV arquivo. Se você usar o cqlsh COPY TO comando 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 Linux, no macOS (instalando coreutils no homebrew) e no Windows (usando o Windows Subsystem for 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

Shuf reescreve os dados em um novo CSV arquivo 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 obter mais informações, consulte Estime o tamanho da linha no Amazon Keyspaces.

O código a seguir é usado AWKpara analisar um CSV arquivo 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}

Você usa o tamanho médio da linha na próxima etapa deste tutorial para provisionar a capacidade de gravação da tabela.