本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
第 5 步:使用 Apache 卡桑德拉星火連接器寫入和讀取 Amazon Keyspaces 數據
在此步驟中,您可以通過加載數據從樣本文件到DataFrame
與星火卡桑德拉連接器開始。接下來,您將資料從寫DataFrame
入 Amazon Keyspaces 資料表。您也可以單獨使用此部分,例如,將資料遷移到 Amazon Keyspaces 表格中。最後,你讀取從你的表中的數據到DataFrame
使用星火卡桑德拉連接器。例如,您也可以單獨使用此部分,從 Amazon Keyspaces 表中讀取資料,以便使用 Apache Spark 執行資料分析。
-
啟動星火外殼,如下面的例子。請注意,此範例使用的是 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
-
導入火花卡桑德拉連接器與下面的代碼。
import org.apache.spark.sql.cassandra._
-
要從CSV文件中讀取數據並將其存儲在 a 中
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)
-
使用下列命令將中的資料寫入 Amazon Keyspaces 資料表。
DataFrame
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| +--------------------+------------------+----------------+-----------+-------------+----+----+