2014-07-22 26 views
16

Oldukça büyük miktarlarda veri saklamak için Cassandra 2.0.9 kullanıyorum, bir sütun ailesinde 100Gb diyelim. Bu verileri hızlı bir şekilde CSV'ye aktarmak istiyorum. Denedim: (. Ex 300Mb veri dosyası = ~ 2Gb json)Cassandra'dan CSV'ye büyük miktarda veri aktarımı

  • sstable2json - alet tek satırda veri koyar ve karmaşık şema kullanması nedeniyle, onu alır - bu ayrıştırmak zordur oldukça büyük json dosyaları üretir çok zaman dökümü ve Cassandra KOPYA
  • iç mekanizma göre kaynak dosya adlarını değiştirmek için sever -
  • zaman aşımı yukarıdaki gibi nedenleri - kayıtlarına
  • CAPTURE büyük sayıda oldukça hızlı EC2 örneklerinde zaman aşımı neden olur
  • Sayfalama ile okur - bunun için timeuuid kullanılır, ama oruç depolama Amazon EC2 örneği kullanmak ikinci

başına yaklaşık 1,5k kayıtları döndürür, RAM 15 Gb ve 4 damar

mi Cassandra'dan CSV'ye veri gigabaytları için daha iyi bir seçenek var mı?

+0

Bunun için kendi küçük davranışınızı yapmayı düşündünüz mü? Datastax sürücüsünü kullanarak kolayca veri ayıklayan istekleri yapabilir ve daha sonra java kodu ile çok az csv dosyası (lar) haline getirebilirsiniz. Bu, istediğiniz sonucu elde etmenizi sağlar (biraz çaba için). – Ar3s

+0

Ayrıca, "sayfalama ile okur" da ne yöntem ne de problem almıyorum. – Ar3s

+1

* pagination * ile okur - python sürücüsünü kullanarak içeriği (TimeUuid temelli 100 - 10000 test değerleri) kullanarak sınırlarını okumayı denedim ve ofset, gerçekten yavaştı, Cassandra saniyede 1,5k kayıtlarını okuyabildi. 3 örnek ve çoğaltma faktörü 2 Sadece sürücü kullanarak, her satır için Cassandra hangi düğüm verilerinin depolandığını kontrol etmek zorunda olduğu için hızlı okuma yapmak mümkün kıldığını hayal edemiyorum. – KrzysztofZalasa

cevap

3

Cassandra'dan milyonlarca satırlık bir tabloyu dışa aktarmaya çalıştığınızda COPY'yi kullanmanız oldukça zor olacaktır. Yaptığım şey, cassandra tablosundan yığın (paginated) ile veri yığınını almak için basit bir araç oluşturmaktır. onu CSV'ye aktar.

Datastax'tan java kütüphanesini kullanarak example solution numaramdan bakın.

+0

lütfen tam bir cevap verin, sadece bir bağlantı değil – slfan

+0

Daha önce yazdığım gibi: Bu çözümü denedim, ama çok yavaştı - saniyede 1,5k kayıtlar gönderebilir. Çoğaltma kümesi ve 100Gb veri için herhangi bir karşılaştırma yaptınız mı? – KrzysztofZalasa

+0

Veri kümelerimizdeki en büyük tablo: 22gb veri ~ 122mil satır ~ 444m38.061s'de çıkarıldı. (1 host cassandra server 4core 8gb ram sata hdd kullanarak) (ki bu yaklaşık 4,5k satır/saniye, bu bizim için yeterince iyi çünkü biz sadece veriyi başka bir yere taşımak için yapıyoruz) –

İlgili konular