Cassandra

Cassandra 可以拆分錶嗎?

  • December 23, 2021

如果這是基本問題,我很抱歉;我還在加緊使用 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"))

引用自:https://dba.stackexchange.com/questions/305316