Cassandra 連接器¶
Cassandra 連接器允許查詢儲存在 Cassandra 或 ScyllaDB 中的資料。
相容性¶
連接器與從 2.1.5 開始的所有 Cassandra 版本相容。 最新測試的 ScyllaDB 版本為 5.1.11。
組態¶
若要設定 Cassandra 連接器,請建立一個目錄屬性檔案 etc/catalog/cassandra.properties
,其內容如下,並將 host1,host2
替換為以逗號分隔的 Cassandra 節點清單,用於探索叢集拓撲
connector.name=cassandra
cassandra.contact-points=host1,host2
如果您的 Cassandra 節點未使用預設連接埠 (9042),您還需要設定 cassandra.native-protocol-port
。
對於 ScyllaDB,您無需新增任何額外的組態。ScyllaDB 預設使用與 Cassandra 相同的連接埠。只需在 cassandra.contact-points
組態屬性中指向 ScyllaDB 節點即可。
多個 Cassandra 或 ScyllaDB 叢集¶
您可以根據需要擁有任意數量的目錄,因此如果您有額外的 Cassandra (ScyllaDB) 叢集,只需在 etc/catalog
中新增另一個具有不同名稱的屬性檔案(確保它以 .properties
結尾)。例如,如果您將屬性檔案命名為 sales.properties
,Presto 將使用設定的連接器建立一個名為 sales
的目錄。
組態屬性¶
以下組態屬性可用
屬性名稱 |
說明 |
---|---|
|
Cassandra 叢集中主機的逗號分隔清單。Cassandra 驅動程式將使用這些聯絡點來探索叢集拓撲。至少需要一個 Cassandra 主機。 |
|
執行原生用戶端協定的 Cassandra 伺服器連接埠(預設為 |
|
Cassandra 中的一致性層級是指讀取和寫入操作所使用的一致性層級。有關一致性層級的詳細資訊,請參閱 Cassandra 一致性 文件。此屬性預設為一致性層級 |
|
設定為 |
|
用於驗證 Cassandra 叢集的用戶名稱。這是用於所有連線的全域設定,無論連線到 Presto 的使用者是誰。 |
|
用於驗證 Cassandra 叢集的密碼。這是用於所有連線的全域設定,無論連線到 Presto 的使用者是誰。 |
|
可以覆寫較舊 Cassandra 叢集的協定版本。此屬性預設為 |
注意
如果啟用了授權,cassandra.username
必須具有足夠的權限,才能在 system.size_estimates
表格上執行 SELECT
查詢。
以下進階組態屬性可用
屬性名稱 |
說明 |
---|---|
|
在 Cassandra 查詢中一次擷取的列數。 |
|
批次處理在一起的分割區數量,用於單一分割區索引鍵資料行的單一選取。 |
|
查詢 Cassandra 時每個分割的索引鍵數量。 |
|
每個節點的分割數量。預設情況下,會使用 |
|
Cassandra 驅動程式將等待來自一個 Cassandra 節點的查詢回應的最長時間。請注意,在發生讀取逾時時,基礎的 Cassandra 驅動程式可能會針對多個節點重試查詢。增加此值可能有助於使用索引的查詢。 |
|
Cassandra 驅動程式將等待建立與 Cassandra 節點連線的最長時間。增加此值可能有助於處理負載較重的 Cassandra 叢集。 |
|
如果未傳送的資料已排隊,則關閉時會停留的秒數。如果設定為零,則會立即關閉通訊端。當此選項為非零時,通訊端會停留那麼多秒,以確認所有資料都已寫入對等端。此選項可用於避免在不再需要連線時立即關閉它們,進而佔用 Cassandra 伺服器上的通訊端。 |
|
用於重試對 Cassandra 的失敗請求的原則。此屬性預設為 |
|
設定為 |
|
|
|
使用每個遠端資料中心的所提供的主機數量,作為 |
|
設定為 |
|
設定為 |
|
設定為 |
|
設定為 |
|
用於 |
|
用於 |
|
推測性執行的次數 (預設為 |
|
每次推測性執行之間的延遲時間 (預設為 |
|
是否啟用 TLS 安全性 (預設為 |
|
PEM 或 JKS 金鑰儲存的路徑。 |
|
PEM 或 JKS 信任儲存的路徑。 |
|
金鑰儲存的密碼。 |
|
信任儲存的密碼。 |
查詢 Cassandra 或 ScyllaDB 資料表¶
users
資料表是 Cassandra 入門指南中的範例 Cassandra 資料表。可以使用 Cassandra 的 cqlsh (CQL 互動式終端機) 建立此資料表和 mykeyspace
索引鍵空間。
cqlsh> CREATE KEYSPACE mykeyspace
... WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
cqlsh> USE mykeyspace;
cqlsh:mykeyspace> CREATE TABLE users (
... user_id int PRIMARY KEY,
... fname text,
... lname text
... );
此資料表可以在 Presto 中描述
DESCRIBE cassandra.mykeyspace.users;
Column | Type | Extra | Comment
---------+---------+-------+---------
user_id | bigint | |
fname | varchar | |
lname | varchar | |
(3 rows)
然後可以在 Presto 中查詢此資料表
SELECT * FROM cassandra.mykeyspace.users;
資料類型¶
資料類型對應如下
Cassandra |
Presto |
---|---|
ASCII |
VARCHAR |
BIGINT |
BIGINT |
BLOB |
VARBINARY |
BOOLEAN |
BOOLEAN |
DECIMAL |
DOUBLE |
DOUBLE |
DOUBLE |
FLOAT |
REAL |
INET |
VARCHAR(45) |
INT |
INTEGER |
LIST<?> |
VARCHAR |
MAP<?, ?> |
VARCHAR |
SET<?> |
VARCHAR |
TEXT |
VARCHAR |
TIMESTAMP |
TIMESTAMP |
TIMEUUID |
VARCHAR |
VARCHAR |
VARCHAR |
VARINT |
VARCHAR |
SMALLINT |
INTEGER |
TINYINT |
INTEGER |
DATE |
DATE |
任何集合 (LIST/MAP/SET) 都可以指定為 FROZEN,並且該值會對應到 VARCHAR。此外,blob 有不能為空的限制。
上表中未提及的類型不受支援 (例如 tuple 或 UDT)。
分割區索引鍵只能是以下類型
ASCII
TEXT
VARCHAR
BIGINT
BOOLEAN
DOUBLE
INET
INT
FLOAT
DECIMAL
TIMESTAMP
UUID
TIMEUUID
SMALLINT
TINYINT
DATE
限制¶
不包含分割區索引鍵的篩選條件的查詢會導致提取所有分割區。這會導致掃描整個資料集,因此與使用分割區索引鍵作為篩選條件的類似查詢相比,速度會慢得多。
IN
列表篩選條件僅允許用於索引 (即分割區索引鍵或叢集索引鍵) 欄位。範圍篩選條件 (
<
或>
和BETWEEN
) 只能應用於分割區索引鍵。