Stworzyłem stary klucz w klastrze Cassandra, ale stwierdziłem, że definicja jego "komparatora" jest błędna, więc muszę odtworzyć nowy obszar kluczy i przeprowadzić migrację danych. Czy istnieje narzędzie do przeprowadzania migracji danych? lub muszę programować z Thrift klientem odczytać wszystkie dane ze starego keyspace i zapisać je w nowej keyspace? Wszelkie sugestie i fragmenty kodu są mile widziane!Jak przeprowadzić migrację danych Cassandry z jednego obszaru kluczy do innego obszaru kluczy?
Odpowiedz
To jest pytanie wspólnotowe, i myślę, że zostało to wcześniej zadane. Możesz użyć polecenia COPY
w C *. Znajdziesz więcej informacji tutaj http://www.datastax.com/dev/blog/ways-to-move-data-tofrom-datastax-enterprise-and-cassandra
Możemy to zrobić za pomocą polecenia COPY
w cql. Używając polecenia COPY
możemy zapisać dane tabeli w pliku .csv i powrócić do tabeli z pliku .csv. Ale lepszym rozwiązaniem będzie napisanie programu do odczytu z tabeli i zapisanie go do innej tabeli, ponieważ importowanie z pliku csv może się nie powieść, jeśli tabela zawiera typy kolumn kolekcji, takie jak list<text>
, map<text, text>
, set<text>
.
Np: - Aby skopiować dane z tabeli z tabeli do pliku .csv: -
COPY keyspace1.table1 (column1, column2) TO 'path/to/file/keyspace1_table1.csv';
Aby skopiować dane z pliku csv do tabeli: -
COPY keyspace2.table1 (column1, column2) FROM 'path/to/file/keyspace1_table1.csv';
Patrz Cassandra migration tool