Как лучше всего скопировать большую таблицу (> 1,7 млн ​​строк) в другую таблицу

datastax-предприятие

датастакс-стартап

Мы используем кластер DataStax DSE.

Мы пытаемся перенести таблицу в другую таблицу с тем же определением, что и первая таблица, но со вторичным индексом.

Он имеет около 1,7 млн ​​строк

1) Сначала мы используем команду Cassandra COPY из cqlsh. Это занимает много времени > 1 часа. Тайм-аут, не сработало 2) Затем мы пишем программу для экспорта 1-й таблицы в файл CSV. Разбиваем этот CSV-файл на отдельные CSV-файлы и пытаемся загрузить его против 2-й таблицы.

Вставка занимает некоторое время, и она терпит неудачу

3) Мы изучаем http://www.datastax.com/dev/blog/using-the-cassandra-bulk-loader-updated

Поскольку у нас есть CSV-файл, правильный ли это подход?

И мы используем эту библиотеку https://github.com/yukim/cassandra-bulkload-example для создания файла SSTABLE.

Это правильный способ справиться с этим?


person Darwin Ling    schedule 12.04.2016    source источник
comment
попробуйте или посмотрите на github.com/brianmhess/cassandra-loader?   -  person Chris Lohfink    schedule 12.04.2016


Ответы (1)


Если у вас есть csv, я бы рекомендовал использовать этот массовый загрузчик:

https://github.com/brianmhess/cassandra-loader

Если в вашем кластере включена аналитика Spark:

sc.cassandraTable("ks1","таблица").saveToCassandra("ks2","таблица")

Смотрите также:

http://docs.datastax.com/en/latest-dse/datastax_enterprise/migration/migratingBulkSparkRDD.html

person Iain    schedule 12.04.2016
comment
Привет, Лейн, у нас есть файл CSV. Думаю, с помощью этого инструмента нам сначала нужно создать схему в целевой БД. А затем запустить инструмент загрузки там. Это правильно? Кроме того, у нас возникают проблемы с разрывом соединения с удаленного хоста, лучше ли запускать этот инструмент загрузки на узле, где запущен основной узел cassandra? - person Darwin Ling; 13.04.2016
comment
Кроме того, почему этот инструмент лучше? Я проверил код, похоже, он использует только ConnectionPool, чем это лучше, чем sshtableload? - person Darwin Ling; 13.04.2016
comment
Этот слайд-шоу сравнивает sstableloader, COPY и приложение-загрузчик cassandra: slideshare.net/BrianHess4 /bulk-loading-into-cassandra Большим преимуществом является отсутствие необходимости писать sstables. Вы также можете терпеть отказы узлов с загрузчиком, но не с sstableloader. Обычно лучше всего запускать клиентов на отдельных хостах. Если ваше соединение обрывается, вы можете попробовать уменьшить количество фьючерсов и/или курс. - person Iain; 14.04.2016