1. Buat Instance ECS klien di VPC yang sama dengan kluster Cassandra
Alat ini menggunakan antarmuka streaming file untuk mengimpor data ke kluster ApsaraDB for Cassandra. BulkLoad adalah salah satu cara tercepat untuk memigrasikan data offline ke kluster Cassandra. Sebelum mengimpor data, lakukan persiapan berikut:
Buat kluster Cassandra.
Siapkan data offline dalam format SSTable atau CSV.
Buat Instance ECS yang independen di VPC yang sama dengan kluster Cassandra, serta konfigurasikan aturan grup keamanan untuk memastikan bahwa Instance ECS dapat mengakses kluster Cassandra.
1. Buat Instance ECS klien di VPC yang sama dengan kluster Cassandra
Disarankan untuk membuat Instance ECS yang independen dari kluster Cassandra. Jika tidak, layanan online mungkin terpengaruh.
2. Buat skema
$ cqlsh -f schema.cql -u USERNAME -p PASSWORD [host]
3. Siapkan data
3.1 Format data SSTable
Organisasikan direktori dalam format data/${keyspace}/${table} dan simpan data SSTable di direktori tersebut, seperti yang ditunjukkan dalam contoh berikut:
ls /tmp/quote/historical_prices/
md-1-big-CompressionInfo.db md-1-big-Data.db md-1-big-Digest.crc32 md-1-big-Filter.db md-1-big-Index.db md-1-big-Statistics.db md-1-big-Summary.db md-1-big-TOC.txt
Pada contoh sebelumnya, parameter keyspace disetel ke quote dan parameter tabel disetel ke historical_prices.
Impor data
Jalankan perintah sstableloader untuk menentukan katalog data data/${ks}/${table} di direktori bin distribusi Cassandra.
${cassandra_home}/bin/sstableloader -d <alamat ip node> data/${ks}/${table}
Setelah data SSTable diimpor, jalankan perintah berikut untuk memeriksa data: bin/cqlsh -u USERNAME -p PASSWORD [host]
$ bin/cqlsh
cqlsh> select * from quote.historical_prices;
ticker | date | adj_close | close | high | low | open | volume
--------+---------------------------------+-----------+-----------+-----------+-----------+-----------+--------
ORCL | 2019-10-29 16:00:00.000000+0000 | 26.160000 | 26.160000 | 26.809999 | 25.629999 | 26.600000 | 181.000
ORCL | 2019-10-28 16:00:00.000000+0000 | 26.559999 | 26.559999 | 26.700001 | 22.600000 | 22.900000 | 555.000
3.2 Format data CSV
Anda harus terlebih dahulu mengonversi data CSV ke format SSTable. Cassandra menyediakan alat CQLSSTableWriter untuk menghasilkan SSTable. Alat ini memungkinkan Anda mengonversi data dalam format tertentu ke format SSTable. Data CSV juga harus diorganisir terlebih dahulu. Oleh karena itu, Anda harus mengompilasi dan menjalankan kode untuk penguraian data CSV sendiri. Contoh kode berikut menunjukkan cara menggunakan alat ini. Untuk informasi lebih lanjut tentang alat ini, kunjungi repositori GitHub.
// Persiapkan penulis SSTable
CQLSSTableWriter.Builder builder = CQLSSTableWriter.builder();
// setel direktori keluaran
builder.inDirectory(outputDir)
// setel skema target
.forTable(SCHEMA)
// setel pernyataan CQL untuk memasukkan data
.using(INSERT_STMT)
// setel partisi jika diperlukan
// defaultnya adalah Murmur3Partitioner jadi setel jika Anda menggunakan yang berbeda.
.withPartitioner(new Murmur3Partitioner());
CQLSSTableWriter writer = builder.build();
/TODO: Baca file CSV. Baca setiap baris file CSV secara iteratif.
while ((line = csvReader.read()) ! = null)
{
writer.addRow(ticker,
DATE_FORMAT.parse(line.get(0)),
new BigDecimal(line.get(1)),
new BigDecimal(line.get(2)),
new BigDecimal(line.get(3)),
new BigDecimal(line.get(4)),
Long.parseLong(line.get(6)),
new BigDecimal(line.get(5)));
}
writer.close();
Setelah Anda menghasilkan data SSTable menggunakan program kustom, impor data seperti yang dijelaskan di bagian 3.1.