

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ステップ 5: Apache Cassandra Spark コネクタで Amazon Keyspaces データの書き込みや読み込みを行う
<a name="spark-tutorial-step5"></a>

このステップでは、まず Spark Cassandra `DataFrame` コネクタを使用してサンプルファイルのデータを読み込みます。次に、`DataFrame` のデータを、 Amazon Keyspaces テーブルに書き込みます。この部分を別々に利用して、たとえば Amazon Keyspaces テーブルにデータを移行することもできます。最後に、Spark Cassandra `DataFrame` コネクタで、テーブルからデータをに読み込みます。この部分を別々に利用して、たとえば、Amazon Keyspaces テーブルからデータを読み取り、Apache Spark でデータ分析を実行することができます。

1. 次の例のように Spark シェルを起動します。この例では、SigV4 認証を使用しています。注意してください。

   ```
   ./spark-shell --files application.conf --conf spark.cassandra.connection.config.profile.path=application.conf --packages software.aws.mcs:aws-sigv4-auth-cassandra-java-driver-plugin:4.0.5,com.datastax.spark:spark-cassandra-connector_2.12:3.1.0 --conf spark.sql.extensions=com.datastax.spark.connector.CassandraSparkExtensions
   ```

1. 以下のコードで Spark Cassandra コネクタをインポートします。

   ```
   import org.apache.spark.sql.cassandra._
   ```

1. CSV ファイルからデータを読み取って `DataFrame` に保存するには、次のコード例を利用できます。

   ```
   var df = spark.read.option("header","true").option("inferSchema","true").csv("keyspaces_sample_table.csv")
   ```

   次のコマンドで結果を表示できます。

   ```
   scala> df.show();
   ```

   出力は次のようになります。

   ```
   +----------------+----+-----------+----+------------------+--------------------+-------------+
   |           award|year|   category|rank|            author|          book_title|    publisher|
   +----------------+----+-----------+----+------------------+--------------------+-------------+
   |Kwesi Manu Prize|2020|    Fiction|   1|        Akua Mansa|   Where did you go?|SomePublisher|
   |Kwesi Manu Prize|2020|    Fiction|   2|       John Stiles|           Yesterday|Example Books|
   |Kwesi Manu Prize|2020|    Fiction|   3|        Nikki Wolf|Moving to the Cha...| AnyPublisher|
   |            Wolf|2020|Non-Fiction|   1|       Wang Xiulan|    History of Ideas|Example Books|
   |            Wolf|2020|Non-Fiction|   2|Ana Carolina Silva|       Science Today|SomePublisher|
   |            Wolf|2020|Non-Fiction|   3| Shirley Rodriguez|The Future of Sea...| AnyPublisher|
   |     Richard Roe|2020|    Fiction|   1| Alejandro Rosalez|         Long Summer|SomePublisher|
   |     Richard Roe|2020|    Fiction|   2|       Arnav Desai|             The Key|Example Books|
   |     Richard Roe|2020|    Fiction|   3|     Mateo Jackson|    Inside the Whale| AnyPublisher|
   +----------------+----+-----------+----+------------------+--------------------+-------------+
   ```

   `DataFrame` のデータのスキーマは、次の例のように確認できます。

   ```
   scala> df.printSchema
   ```

   出力は次のようになります。

   ```
   root
   |-- award: string (nullable = true)
   |-- year: integer (nullable = true)
   |-- category: string (nullable = true)
   |-- rank: integer (nullable = true)
   |-- author: string (nullable = true)
   |-- book_title: string (nullable = true)
   |-- publisher: string (nullable = true)
   ```

1. `DataFrame` のデータを次のコマンドで Amazon Keyspaces テーブルに書き込みます。

   ```
   df.write.cassandraFormat("book_awards", "catalog").mode("APPEND").save()
   ```

1. データが保存されたことを確認するには、次の例のように、データをデータフレームに読み戻します。

   ```
   var newDf = spark.read.cassandraFormat("book_awards", "catalog").load()
   ```

   これで、データフレームに組み込まれたデータを表示できます。

   ```
   scala> newDf.show()
   ```

   このコマンドの出力は次のようになります。

   ```
   +--------------------+------------------+----------------+-----------+-------------+----+----+
   |          book_title|            author|           award|   category|    publisher|rank|year|
   +--------------------+------------------+----------------+-----------+-------------+----+----+
   |         Long Summer| Alejandro Rosalez|     Richard Roe|    Fiction|SomePublisher|   1|2020|
   |    History of Ideas|       Wang Xiulan|            Wolf|Non-Fiction|Example Books|   1|2020|
   |   Where did you go?|        Akua Mansa|Kwesi Manu Prize|    Fiction|SomePublisher|   1|2020|
   |    Inside the Whale|     Mateo Jackson|     Richard Roe|    Fiction| AnyPublisher|   3|2020|
   |           Yesterday|       John Stiles|Kwesi Manu Prize|    Fiction|Example Books|   2|2020|
   |Moving to the Cha...|        Nikki Wolf|Kwesi Manu Prize|    Fiction| AnyPublisher|   3|2020|
   |The Future of Sea...| Shirley Rodriguez|            Wolf|Non-Fiction| AnyPublisher|   3|2020|
   |       Science Today|Ana Carolina Silva|            Wolf|Non-Fiction|SomePublisher|   2|2020|
   |             The Key|       Arnav Desai|     Richard Roe|    Fiction|Example Books|   2|2020|
   +--------------------+------------------+----------------+-----------+-------------+----+----+
   ```