Cassandra
Cassandra 可以拆分錶嗎?
如果這是基本問題,我很抱歉;我還在加緊使用 Cassandra。
問題:假設我有一張桌子。每個條目都有一個唯一的使用者 ID 作為“行鍵”和三列(城市、州和年齡)
我想將此表拆分為具有相同行鍵但不同列的兩個表。因此,將有一個名為 Location Table 的表,其中包含兩列(City 和 State),第二個表稱為 Age 表,其中包含一列(Age)。
問題:是否有 Cassandra 命令以這種方式拆分錶?
沒有內置命令,因此您需要使用一些外部工具,例如:
- DSBulk用於將數據從表解除安裝到磁碟,然後有選擇地載入數據 - 請參閱此部落格文章中有關如何使用
-m
選項的範例 3。- Spark 與Spark Cassandra 連接器- 讀取數據,僅選擇您需要的列並寫入新表。Spark 的主要優點是它可以在記憶體中做所有事情,你不需要太多的磁碟空間。像這樣的東西(未經測試,確實
spark-shell
與Scala一起使用。按照文件設置必要的連接屬性):import org.apache.spark.sql.cassandra._ val df = spark.read .format("org.apache.spark.sql.cassandra") .options(Map( "table" -> "tbl_name", "keyspace" -> "ks_name")) .load() // write locations df.select("rowid", "city", "state") .createCassandraTableEx("ks_name", "location_table", partitionKeyColumns = Some(Seq("rowid")) // write age df.select("rowid", "age") .createCassandraTableEx("ks_name", "age_table", partitionKeyColumns = Some(Seq("rowid"))