5단계: Apache Cassandra Spark 커넥터를 사용하여 Amazon Keyspaces 데이터 쓰기 및 읽기 - Amazon Keyspaces(Apache Cassandra용)

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

5단계: Apache Cassandra Spark 커넥터를 사용하여 Amazon Keyspaces 데이터 쓰기 및 읽기

이 단계에서는 먼저 샘플 파일의 데이터를 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
  2. 다음 코드를 사용하여 Spark Cassandra 커넥터를 가져옵니다.

    import org.apache.spark.sql.cassandra._
  3. 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)
  4. 다음 명령을 사용하여 Amazon Keyspaces 테이블에 DataFrame의 데이터를 씁니다.

    df.write.cassandraFormat("book_awards", "catalog").mode("APPEND").save()
  5. 데이터가 저장되었는지 확인하려면 다음 예제와 같이 데이터를 데이터 프레임으로 다시 읽을 수 있습니다.

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