选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

第 2 步:准备数据,以便使用 DSBulk 上传数据

聚焦模式
第 2 步:准备数据,以便使用 DSBulk 上传数据 - Amazon Keyspaces(Apache Cassandra 兼容)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为高效传输准备源数据的过程包含两个步骤。第一步,随机化数据。第二步,分析数据以确定相应的 dsbulk 参数值和所需的表设置。

随机化数据

dsbulk 命令按数据在 CSV 文件中显示的顺序读取和写入数据。如果使用 dsbulk 命令创建源文件,将在 CSV 中按键排序顺序写入数据。Amazon Keyspaces 在内部使用分区键对数据进行分区。尽管 Amazon Keyspaces 具有内置逻辑来帮助对针对同一分区键的请求进行负载均衡,但如果您随机排列顺序,则可以更快、更高效地加载数据。这是因为您可以利用 Amazon Keyspaces 在写入不同分区时会出现的内置负载均衡功能。

要将写入操作均匀地分布在分区中,您必须随机化源文件中的数据。您可以编写一个应用程序来执行此操作,也可以使用开源工具来执行此操作,比如 Shuf。Shuf 在 Linux 发行版、macOS(通过在 Homebrew 中安装 coreutils)和 Windows [通过使用 Windows Subsystem for Linux (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 将数据重写到名为 keyspace.table.csv 的新 CSV 文件中。现在,您可以删除 keyspaces_sample_table.csv 文件,您不再需要此文件了。

分析数据

通过分析数据来确定平均行大小和最大行大小。

执行此操作出于以下原因:

  • 平均行大小有助于估算要传输的数据总量。

  • 您需要平均行大小来预置上传数据所需的写入容量。

  • 您可以确保每行的大小小于 1MB,这是 Amazon Keyspaces 中的最大行大小。

注意

此限额指的是行大小,而不是分区大小。与 Apache Cassandra 分区不同,Amazon Keyspaces 分区实际上可以不受大小限制。分区键和聚类列需要额外的元数据存储空间,您必须将其加到行的原始大小中。有关更多信息,请参阅 估算 Amazon Keyspaces 中的行大小

以下代码使用 AWK 分析 CSV 文件并打印平均行大小和最大行大小。

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。在本教程的下一步中,您将使用平均行大小来预置表的写入容量。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。