2단계: 를 사용하여 업로드할 데이터를 준비합니다. DSBulk - Amazon Keyspaces(Apache Cassandra용)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

2단계: 를 사용하여 업로드할 데이터를 준비합니다. DSBulk

효율적인 전송을 위해 소스 데이터를 준비하는 것은 2단계 프로세스입니다. 먼저 데이터를 무작위화합니다. 두 번째 단계에서는 데이터를 분석하여 적절한 dsbulk 파라미터 값과 필요한 테이블 설정을 결정합니다.

데이터 무작위화

dsbulk 명령은 CSV 파일에 표시된 것과 동일한 순서로 데이터를 읽고 씁니다. dsbulk명령을 사용하여 소스 파일을 만들면 데이터가 키별로 정렬된 순서대로 에 기록됩니다. CSV Amazon Keyspaces는 내부적으로 파티션 키를 사용하여 데이터를 분할합니다. Amazon Keyspaces에는 동일한 파티션 키에 대한 요청을 로드 밸런싱하는 데 도움이 되는 로직이 내장되어 있지만 순서를 무작위로 지정하면 데이터를 로드하는 것이 더 빠르고 효율적입니다. Amazon Keyspaces가 다른 파티션에 쓸 때 발생하는 내장된 로드 밸런싱을 활용할 수 있기 때문입니다.

쓰기를 파티션 전체에 균등하게 분산하려면 소스 파일의 데이터를 무작위화해야 합니다. 이 작업을 수행하는 애플리케이션을 작성하거나 Shuf와 같은 오픈 소스 도구를 사용할 수 있습니다. Shuf는 리눅스 배포판, macOS (홈브루에 코어 리필 설치), 윈도우 (리눅스용 윈도우 서브시스템 () 사용) 에서 무료로 사용할 수 있습니다. WSL 이 단계에서 열 이름이 있는 헤더 행이 섞이지 않도록 하려면 한 가지 추가 단계가 필요합니다.

헤더를 보존하면서 소스 파일을 무작위화하려면 다음 코드를 입력합니다.

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는 라는 새 파일에 데이터를 다시 씁니다. CSV keyspace.table.csv 이제 필요 없는 keyspaces_sample_table.csv 파일을 삭제할 수 있습니다.

데이터 분석

데이터를 분석하여 평균 및 최대 행 크기를 결정합니다.

이렇게 하는 이유는 다음과 같습니다.

  • 평균 행 크기는 전송할 총 데이터 양을 추정하는 데 도움이 됩니다.

  • 데이터 업로드에 필요한 쓰기 용량을 프로비저닝하려면 평균 행 크기가 필요합니다.

  • 각 행의 크기가 Amazon Keyspaces의 최대 행 크기인 1MB 미만인지 확인할 수 있습니다.

참고

이 할당량은 파티션 크기가 아니라 행 크기를 나타냅니다. Apache Cassandra 파티션과 달리 Amazon Keyspaces 파티션은 크기가 사실상 바인딩되지 않을 수 있습니다. 파티션 키와 클러스터링 열에는 메타데이터를 위한 추가 스토리지가 필요하며 이를 행의 원시 크기에 추가해야 합니다. 자세한 내용은 Amazon Keyspace의 행 크기 추정 단원을 참조하십시오.

다음 코드는 CSV 파일을 분석하고 평균 및 최대 행 크기를 출력하는 데 사용합니다 AWK.

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

이 코드를 실행하면 다음과 같은 결과가 출력됩니다.

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

최대 행 크기가 1MB를 초과하지 않는지 확인합니다. 그럴 경우 행을 분할하거나 데이터를 압축하여 행 크기를 1MB 미만으로 가져와야 합니다. 이 자습서의 다음 단계에서 평균 행 크기를 사용하여 테이블의 쓰기 용량을 프로비저닝합니다.