步驟 4:配cqlsh COPY FROM置設置 - Amazon Keyspaces (適用於 Apache Cassandra)

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

步驟 4:配cqlsh COPY FROM置設置

本節概述如何決定的參數值cqlsh COPY FROM。此命cqlsh COPY FROM令會讀取您之前準備好的 CSV 檔案,並使用 CQL 將資料插入 Amazon Keyspaces。該命令分割行,並在一組 Worker 之間分配INSERT操作。每個工作者都會與 Amazon Keyspaces 建立連線,並沿著此通道傳送INSERT請求。

cqlsh COPY命令沒有內部邏輯,可以在其 Worker 之間平均分配工作。但是,您可以手動配置它,以確保工作均勻分佈。請先檢閱下列 cqlsh 索引鍵參數:

  • DELIMI@@ TER — 如果您使用逗號以外的分隔符,則可以設置該參數,該參數默認為逗號。

  • INGRATE — 每秒cqlsh COPY FROM嘗試處理的目標資料列數目。如果未設定,則預設值為 100,000。

  • NUMLSH 處理作業 — cqlsh 為工作建立的子工作者處理作業數目。COPY FROM此設定的最大值為 16,預設值為num_cores - 1,其num_cores中是執行 cqlsh 之主機上的處理核心數目。

  • MAXBATCHSI ZE — 批次大小決定在單一批次中插入目標資料表的最大列數。如果未設定,cqlsh 會使用 20 個插入資料列的批次。

  • 區塊大小 — 傳遞給子工作者的工作單位大小。默認情況下,它設置為 5,000。

  • 最大嘗試次數 — 重試失敗的工作站區塊的次數上限。達到最大嘗試次數之後,失敗的記錄會寫入新的 CSV 檔案,您可以稍後在調查失敗後再次執行該檔案。

INGESTRATE根據您佈建至目標目的地表格的 WCU 數目來設定。cqlsh COPY FROM命令INGESTRATE的不是限制,而是目標平均值。這意味著它可以(並且通常會)超出您設置的數字。若要允許突發並確定有足夠的容量來處理資料載入要求,請設定INGESTRATE為表格寫入容量的 90%。

INGESTRATE = WCUs * .90

接下來,將NUMPROCESSES參數設定為等於少於系統核心數的 1。要了解系統的內核數量,可以運行以下代碼。

python -c "import multiprocessing; print(multiprocessing.cpu_count())"

在本教程中,我們使用以下值。

NUMPROCESSES = 4

每個程序都會建立一個工作者,每個工作者都會建立與 Amazon Keyspaces 的連線。Amazon Keyspaces 在每個連線上每秒最多可支援 3,000 個 CQL 請求。這表示您必須確定每個 Worker 每秒處理的要求少於 3,000 個。

與此同樣INGESTRATE,工作人員通常超過您設定的數字,並且不受時鐘秒數的限制。因此,若要解決突發問題,請將 cqlsh 參數設定為每個 Worker 以每秒處理 2,500 個要求為目標。若要計算分配給 Worker 的工作量,請使用下列準則。

  • INGESTRATENUMPROCESSES

  • 如果INGESTRATE/NUMPROCESSES> 2,500,則降低INGESTRATE以使此公式成立。

INGESTRATE / NUMPROCESSES <= 2,500

在您設定設定以最佳化範例資料上傳之前,讓我們先檢閱cqlsh預設設定,並瞭解使用這些設定如何影響資料上傳程序。因為cqlsh COPY FROM使CHUNKSIZE用建立工作區塊 (INSERT陳述式) 來散發給 Worker,因此工作不會自動均勻分配。某些工作人員可能會閒置,具體取決於INGESTRATE設置。

若要在 Worker 之間平均分配工作,並使每個 Worker 保持每秒 2,500 個要求的最佳速率CHUNKSIZE,您必須設定MAXBATCHSIZE、並INGESTRATE變更輸入參數。若要最佳化資料載入期間的網路流量使用率,請選擇接近最大值 30 的值。MAXBATCHSIZE通過更改CHUNKSIZE為 100 和 MAXBATCHSIZE 25,10,000 行平均分佈在四個工人之間(萬/2500 = 4)。

下面的代碼示例說明了這一點。

INGESTRATE = 10,000 NUMPROCESSES = 4 CHUNKSIZE = 100 MAXBATCHSIZE. = 25 Work Distribution: Connection 1 / Worker 1 : 2,500 Requests per second Connection 2 / Worker 2 : 2,500 Requests per second Connection 3 / Worker 3 : 2,500 Requests per second Connection 4 / Worker 4 : 2,500 Requests per second

總而言之,在設定cqlsh COPY FROM參數時,請使用下列公式:

  • 內容 = 寫入容量 _ 單位 * .90

  • 程序數 = 核心數 -1 (預設值)

  • 整理/數量進程 = 2,500(這必須是一個真實的陳述。)

  • 最大批次大小 = 30 (預設為 20。 Amazon Keyspaces 接受多達 30 個批次。)

  • 區塊大小 = (擷取/處理編號)/最大批次大小

現在您已經計算NUMPROCESSESINGESTRATE、、和CHUNKSIZE,就可以載入資料了。