本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 2:準備要上傳的資料 DSBulk
準備來源資料以進行有效傳輸需要兩個步驟。首先,您隨機化資料。在第二個步驟中,您將分析資料以確定適當的dsbulk
參數值和所需的表格設定。
隨機化資料
命dsbulk
令會以與檔案中出現的相同順序讀取和寫入資CSV料。如果您使用指dsbulk
令建立來源檔案,則會在中按鍵排序順序寫入資料。CSV在內部,Amazon 金 Keyspaces 會使用分割區金鑰來分割資料。雖然 Amazon Keyspaces 具有內建邏輯,可協助對相同分區金鑰進行負載平衡請求,但是如果您隨機排序順序,載入資料會更快速且更有效率。這是因為您可以利用 Amazon Keyspaces 寫入不同分割區時所發生的內建負載平衡。
若要將寫入平均分散到分割區中,您必須隨機化來源檔案中的資料。您可以編寫一個應用程序來執行此操作或使用開源工具,例如 Shuf
若要在保留標頭的同時隨機化來源檔案,請輸入下列程式碼。
tail -n +2
keyspaces_sample_table.csv
| shuf -okeyspace.table.csv
&& (head -1keyspaces_sample_table.csv
&& cat keyspace.table.csv ) >keyspace.table.csv1
&& mvkeyspace.table.csv1
keyspace.table.csv
Shuf 會將資料重新寫入名為的新CSV檔案。keyspace.table.csv
您現在可以刪除keyspaces_sample_table.csv
檔案,不再需要它。
分析資料
透過分析資料來決定平均和最大資料列大小。
您這樣做的原因如下:
-
平均資料列大小有助於估計要傳輸的資料總量。
-
您需要平均資料列大小來佈建資料上傳所需的寫入容量。
-
您可以確保每行的大小小於 1 MB,這是 Amazon Keyspaces 中的最大行大小。
注意
此配額指的是行大小,而不是分區大小。與 Apache 卡桑德拉分區不同,Amazon Keyspaces 分區的大小幾乎可以取消綁定。分割索引鍵和叢集資料行需要額外的中繼資料儲存空間,您必須將其新增至資料列的原始大小。如需詳細資訊,請參閱估計 Amazon Keyspaces 中的行大小。
下面的代碼用AWK
awk -F, 'BEGIN {samp=10000;max=-1;}{if(NR>1){len=length($0);t+=len;avg=t/NR;max=(len>max ? len : max)}}NR==samp{exit}END{printf("{lines: %d, average: %d bytes, max: %d bytes}\n",NR,avg,max);}'
keyspace.table.csv
運行此代碼會導致以下輸出。
using 10,000 samples: {lines: 10000, avg: 123 bytes, max: 225 bytes}
請確定您的最大資料列大小不超過 1 MB。如果是這樣,則必須分解該行或壓縮數據以使行大小低於 1 MB。在本教學課程的下一個步驟中,您會使用平均資料列大小來佈建資料表的寫入容量。