

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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 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. 다음 명령을 사용하여 Amazon Keyspaces 테이블에 `DataFrame`의 데이터를 씁니다.

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