Step 3: Create the application configuration file - Amazon Keyspaces (for Apache Cassandra)
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

Step 3: Create the application configuration file

To use the open-source Spark Cassandra Connector with Amazon Keyspaces, you need to provide an application configuration file that contains the settings required to connect with the DataStax Java driver. You can use either service-specific credentials or the SigV4 plugin to connect.

If you haven't already done so, you need to convert the Starfield digital certificate into a trustStore file. You can follow the detailed steps at Before you begin from the Java driver connection tutorial. Take note of the trustStore file path and password because you need this information when you create the application config file.

Connect with SigV4 authentication

This section shows you an example application.conf file that you can use when connecting with Amazon credentials and the SigV4 plugin. If you haven't already done so, you need to generate your IAM access keys (an access key ID and a secret access key) and save them in your Amazon config file or as environment variables. For detailed instructions, see Credentials required by the Amazon CLI, the Amazon SDK, or the Amazon Keyspaces SigV4 plugin for Cassandra client drivers.

In the following example, replace the file path to your trustStore file, and replace the password.

datastax-java-driver { basic.contact-points = ["cassandra.us-east-1.amazonaws.com:9142"] basic.load-balancing-policy { class = DefaultLoadBalancingPolicy local-datacenter = us-east-1 slow-replica-avoidance = false } basic.request { consistency = LOCAL_QUORUM } advanced { auth-provider = { class = software.aws.mcs.auth.SigV4AuthProvider aws-region = us-east-1 } ssl-engine-factory { class = DefaultSslEngineFactory truststore-path = "path_to_file/cassandra_truststore.jks" truststore-password = "password" hostname-validation=false } } advanced.connection.pool.local.size = 3 }

Update and save this configuration file as /home/user1/application.conf. The following examples use this path.

Connect with service-specific credentials

This section shows you an example application.conf file that you can use when connecting with service-specific credentials. If you haven't already done so, you need to generate service-specific credentials for Amazon Keyspaces. For detailed instructions, see Generate service-specific credentials.

In the following example, replace username and password with your own credentials. Also, replace the file path to your trustStore file, and replace the password.

datastax-java-driver { basic.contact-points = ["cassandra.us-east-1.amazonaws.com:9142"] basic.load-balancing-policy { class = DefaultLoadBalancingPolicy local-datacenter = us-east-1 } basic.request { consistency = LOCAL_QUORUM } advanced { auth-provider = { class = PlainTextAuthProvider username = "username" password = "password" aws-region = "us-east-1" } ssl-engine-factory { class = DefaultSslEngineFactory truststore-path = "path_to_file/cassandra_truststore.jks" truststore-password = "password" hostname-validation=false } metadata = { schema { token-map.enabled = true } } } }

Update and save this configuration file as /home/user1/application.conf to use with the code example.

Connect with a fixed rate

To force a fixed rate per Spark executor, you can define a request throttler. This request throttler limits the rate of requests per second. The Spark Cassandra Connector deploys a Cassandra session per executor. Using the following formula can help you achieve consistent throughput against a table.

max-request-per-second * numberOfExecutors = total throughput against a table

You can add this example to the application config file that you created earlier.

datastax-java-driver { advanced.throttler { class = RateLimitingRequestThrottler max-requests-per-second = 3000 max-queue-size = 30000 drain-interval = 1 millisecond } }