

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

# 第 4 步：配置 `DSBulk` 设置，以将 CSV 文件中的数据上传到目标表
<a name="dsbulk-upload-config"></a>

本节概述了配置 DSBulk 将数据上传到 Amazon Keyspaces 所需的步骤。您可以使用配置文件 DSBulk 进行配置。您可以直接从命令行指定配置文件。

1. 创建用于迁移到 Amazon Keyspaces 的 DSBulk 配置文件，在本示例中，我们使用文件名。`dsbulk_keyspaces.conf`在 DSBulk 配置文件中指定以下设置。

   1. *`PlainTextAuthProvider`*：使用 `PlainTextAuthProvider` 类创建身份验证提供者。`ServiceUserName` 和 `ServicePassword` 应该与您按照[创建用于通过编程方式访问 Amazon Keyspaces 的凭证。](programmatic.credentials.md)中的步骤生成特定于服务的凭证时获得的用户名和密码相匹配。

   1. *`local-datacenter`*— 将的值设置 AWS 区域 为`local-datacenter`要连接的。例如，如果应用程序要连接到 `cassandra.us-east-1.amazonaws.com`，则将本地数据中心设置为 `us-east-1`。有关所有可用信息 AWS 区域，请参阅[Amazon Keyspaces 的服务端点](programmatic.endpoints.md)。为了避免复制，请将 `slow-replica-avoidance` 设置为 `false`。

   1. *`SSLEngineFactory`*：要配置 SSL/TLS，初始化 `SSLEngineFactory`，方法是在配置文件中添加一个部分，其中只有一行，用于指定类 `class = DefaultSslEngineFactory`。提供指向 `cassandra_truststore.jks` 的路径和您之前创建的密码。

   1. *`consistency`*：将一致性级别设置为 `LOCAL QUORUM`。不支持其他写入一致性级别，有关更多信息，请参阅 [支持的 Apache Cassandra 读写一致性级别和相关成本](consistency.md)。

   1. 可以在 Java 驱动程序中配置每个池的连接数。在此示例中，将 `advanced.connection.pool.local.size` 设置为 3。

   以下是完整的示例配置文件。

   ```
   datastax-java-driver {
   basic.contact-points = [ "cassandra.us-east-1.amazonaws.com:9142"]
   advanced.auth-provider {
       class = PlainTextAuthProvider
       username = "ServiceUserName"
       password = "ServicePassword"
   }
   
   basic.load-balancing-policy {
       local-datacenter = "us-east-1"
       slow-replica-avoidance = false           
   }
   
   basic.request {
       consistency = LOCAL_QUORUM
       default-idempotence = true
   }
   advanced.ssl-engine-factory {
       class = DefaultSslEngineFactory
       truststore-path = "./cassandra_truststore.jks"
       truststore-password = "my_password"
       hostname-validation = false
     }
   advanced.connection.pool.local.size = 3
   }
   ```

1. 查看 DSBulk `load`命令的参数。

   1. *`executor.maxPerSecond`*：load 命令尝试每秒同时处理的最大行数。如果未设置，则使用 -1 禁用此设置。

      `executor.maxPerSecond`根据您配置到目标目标表 WCUs 的数量进行设置。`load` 命令的 `executor.maxPerSecond` 不是限制，而是目标平均值。这意味着它可以（并且经常）突破您设定的数字。要允许暴增并确保有足够的容量来处理数据加载请求，请将 `executor.maxPerSecond` 设置为表写入容量的 90%。

      ```
      executor.maxPerSecond = WCUs * .90
      ```

      在本教程中，我们将 `executor.maxPerSecond` 设置为 5。
**注意**  
如果您使用的是 DSBulk 1.6.0 或更高版本，则可以改用`dsbulk.engine.maxConcurrentQueries`。

   1. 为 DSBulk `load`命令配置这些其他参数。
      + *`batch-mode`*：此参数告诉系统按分区键对操作进行分组。我们建议禁用批处理模式，因为它可能会导致热键情况并导致 `WriteThrottleEvents`。
      + *`driver.advanced.retry-policy-max-retries`*：这决定了重试失败查询的次数。如果未设置，则默认值为 10。您可以根据需要调整此值。
      + *`driver.basic.request.timeout`*：系统等待查询返回的时间（以分钟为单位）。如果未设置，则默认值为“5 分钟”。您可以根据需要调整此值。