

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

# 步骤 4：在 Amazon Keyspaces 中准备源数据和目标表
<a name="spark-tutorial-step4"></a>

在本步骤中，您将创建一个包含示例数据和 Amazon Keyspaces 表的源文件。

1. 创建源文件。您可以选择以下选项之一：
   + 在本教程中，您会使用名为 `keyspaces_sample_table.csv` 的逗号分隔值 (CSV) 文件作为数据迁移的源文件。提供的示例文件包含名为 `book_awards` 的表中的几行数据。

     1. 下载以下存档文件 [samplemigration.zip](samples/samplemigration.zip) 中包含的示例 CSV 文件 (`keyspaces_sample_table.csv`)。解压缩存档文件并记下指向 `keyspaces_sample_table.csv` 的路径。
   + 如果您想使用自己的 CSV 文件将数据写入 Amazon Keyspaces，请确保数据经过随机化处理。直接从数据库读取或导出到平面文件的数据通常按分区和主键排序。将有序的数据导入 Amazon Keyspaces 可能会导致数据被写入较小的 Amazon Keyspaces 分区，从而造成流量分布不均匀。这可能会导致性能降低和错误率上升。

     相比之下，将数据随机化有助于更均匀地在分区之间分配流量，从而利用 Amazon Keyspaces 内置的负载均衡功能。您可以使用多种工具将数据随机化。有关使用开源工具 [Shuf](https://en.wikipedia.org/wiki/Shuf) 的示例，请参阅数据迁移教程中的[第 2 步：使用准备要上传的数据 DSBulk](dsbulk-upload-prepare-data.md)。以下示例展示了如何将数据随机处理为 `DataFrame`。

     ```
     import org.apache.spark.sql.functions.randval
     shuffledDF = dataframe.orderBy(rand())
     ```

1. 在 Amazon Keyspaces 中创建目标键空间和表。

   1. 使用 Connect 到 Amazon Keyspaces。`cqlsh-expansion`有关 `cqlsh-expansion` 安装说明，请参阅[使用 `cqlsh-expansion` 连接 Amazon Keyspaces](programmatic.cqlsh.md#using_cqlsh)。

      将以下示例中的服务端点替换为您自己的值。

      ```
      cqlsh-expansion cassandra.us-east-1.amazonaws.com 9142 --ssl
      ```

   1. 使用以下示例中所示的名称 `catalog` 创建新的键空间。

      ```
      CREATE KEYSPACE catalog WITH REPLICATION = {'class': 'SingleRegionStrategy'};
      ```

   1. 在新键空间变为可用状态后，使用以下代码创建目标表 `book_awards`。要了解有关异步资源创建以及如何检查资源是否可用的更多信息，请参阅[在 Amazon Keyspaces 中查看键空间的创建状态](keyspaces-create.md)。

      ```
      CREATE TABLE catalog.book_awards (
         year int,
         award text,
         rank int, 
         category text,
         book_title text,
         author text, 
         publisher text,
         PRIMARY KEY ((year, award), category, rank)
         );
      ```