步骤 4:配置 DSBulk 设置 - Amazon Keyspaces(Apache Cassandra 兼容)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

步骤 4:配置 DSBulk 设置

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

  1. 为迁移到 Amazon Keyspaces 创建一个 DSBulk 配置文件,在此示例中,我们使用的文件名是 dsbulk_keyspaces.conf。在 DSBulk 配置文件中指定以下设置。

    1. PlainTextAuthProvider:使用 PlainTextAuthProvider 类创建身份验证提供者。ServiceUserNameServicePassword 应该与您按照创建凭证以通过编程方式访问 Amazon Keyspaces中的步骤生成特定于服务的凭证时获得的用户名和密码相匹配。

    2. local-datacenter— 将的值设置 Amazon Web Services 区域 为local-datacenter要连接的。例如,如果应用程序要连接到 cassandra.us-east-2.amazonaws.com,则将本地数据中心设置为 us-east-2。有关所有可用信息 Amazon Web Services 区域,请参阅Amazon Keyspaces 的服务端点。为了避免复制,请将 slow-replica-avoidance 设置为 false

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

    4. consistency:将一致性级别设置为 LOCAL QUORUM。不支持其他写入一致性级别,有关更多信息,请参阅 Amazon Keyspaces 中支持的 Apache Cassandra 一致性级别

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

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

    datastax-java-driver { basic.contact-points = [ "cassandra.us-east-2.amazonaws.com:9142"] advanced.auth-provider { class = PlainTextAuthProvider username = "ServiceUserName" password = "ServicePassword" } basic.load-balancing-policy { local-datacenter = "us-east-2" 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 }
  2. 查看 DSBulk load 命令的参数。

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

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

      executor.maxPerSecond = WCUs * .90

      在本教程中,我们将 executor.maxPerSecond 设置为 5。

      注意

      如果您使用的是 DSBulk 1.6.0 或更高版本,则可以改用 dsbulk.engine.maxConcurrentQueries

    2. 为 DSBulk load 命令配置以下这些附加参数。

      • batch-mode:此参数告诉系统按分区键对操作进行分组。由于这可能会干扰其他设置,因此我们建议禁用批处理模式。

      • driver.advanced.retry-policy-max-retries:这决定了重试失败查询的次数。如果未设置,则默认值为 10。您可以根据需要调整此值。

      • driver.basic.request.timeout:系统等待查询返回的时间(以分钟为单位)。如果未设置,则默认值为“5 分钟”。您可以根据需要调整此值。