

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Passaggio 5: scrivere e leggere i dati di Amazon Keyspaces utilizzando il connettore Apache Cassandra Spark
<a name="spark-tutorial-step5"></a>

In questo passaggio, inizierai caricando i dati dal file di esempio in un file `DataFrame` con lo Spark Cassandra Connector. Successivamente, scrivi i dati da `DataFrame` nella tabella Amazon Keyspaces. Puoi anche utilizzare questa parte in modo indipendente, ad esempio per migrare i dati in una tabella Amazon Keyspaces. Infine, leggi i dati dalla tua tabella in una `DataFrame` utilizzando lo Spark Cassandra Connector. Puoi anche utilizzare questa parte in modo indipendente, ad esempio per leggere i dati da una tabella Amazon Keyspaces per eseguire analisi dei dati con Apache Spark.

1. Avvia Spark Shell come mostrato nell'esempio seguente. Nota che questo esempio utilizza l'autenticazione 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. Importa lo Spark Cassandra Connector con il seguente codice.

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

1. Per leggere i dati dal file CSV e archiviarli in un file`DataFrame`, puoi utilizzare il seguente esempio di codice.

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

   È possibile visualizzare il risultato con il seguente comando.

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

   L'output dovrebbe essere simile a questo.

   ```
   +----------------+----+-----------+----+------------------+--------------------+-------------+
   |           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|
   +----------------+----+-----------+----+------------------+--------------------+-------------+
   ```

   È possibile confermare lo schema dei dati nel `DataFrame` modo illustrato nell'esempio seguente.

   ```
   scala> df.printSchema
   ```

   L'output dovrebbe essere simile a questo.

   ```
   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. Usa il comando seguente per scrivere i dati nella `DataFrame` tabella Amazon Keyspaces.

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

1. Per confermare che i dati sono stati salvati, puoi rileggerli in un dataframe, come mostrato nell'esempio seguente.

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

   Quindi puoi mostrare i dati che ora sono contenuti nel dataframe.

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

   L'output di quel comando dovrebbe assomigliare a questo.

   ```
   +--------------------+------------------+----------------+-----------+-------------+----+----+
   |          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|
   +--------------------+------------------+----------------+-----------+-------------+----+----+
   ```