本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 5:使用 Apache Cassandra Spark 連接器寫入和讀取 Amazon Keyspaces 資料
在此步驟中,您會先DataFrame使用 Spark Cassandra 連接器,將範例檔案中的資料載入 。接著,您將資料從 寫入 DataFrame Amazon Keyspaces 資料表。您也可以獨立使用此部分,例如,將資料遷移至 Amazon Keyspaces 資料表。最後,您會DataFrame使用 Spark Cassandra 連接器,將資料表中的資料讀取至 。您也可以獨立使用此部分,例如,從 Amazon Keyspaces 資料表讀取資料,以使用 Apache Spark 執行資料分析。
-
啟動 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 -
使用下列程式碼匯入 Spark Cassandra 連接器。
import org.apache.spark.sql.cassandra._ -
若要從 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) -
使用下列命令,將 中的資料寫入
DataFrameAmazon Keyspaces 資料表。df.write.cassandraFormat("book_awards", "catalog").mode("APPEND").save() -
若要確認資料已儲存,您可以將其讀回資料框架,如下列範例所示。
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| +--------------------+------------------+----------------+-----------+-------------+----+----+