

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 步驟 5：使用 Apache Cassandra Spark 連接器寫入和讀取 Amazon Keyspaces 資料
<a name="spark-tutorial-step5"></a>

在此步驟中，您會先`DataFrame`使用 Spark Cassandra 連接器，將範例檔案中的資料載入 。接著，您將資料從 寫入 `DataFrame` Amazon Keyspaces 資料表。您也可以獨立使用此部分，例如，將資料遷移至 Amazon Keyspaces 資料表。最後，您會`DataFrame`使用 Spark Cassandra 連接器，將資料表中的資料讀取至 。您也可以獨立使用此部分，例如，從 Amazon Keyspaces 資料表讀取資料，以使用 Apache Spark 執行資料分析。

1. 啟動 Spark Shell，如下列範例所示。請注意，此範例使用 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|
   +--------------------+------------------+----------------+-----------+-------------+----+----+
   ```