2014-07-22 16 views
16

Tôi đang sử dụng Cassandra 2.0.9 để lưu trữ một lượng lớn dữ liệu, giả sử 100Gb, trong một họ cột. Tôi muốn xuất dữ liệu này sang CSV theo cách nhanh chóng. Tôi cố gắng:Xuất lượng lớn dữ liệu từ Cassandra sang CSV

  • sstable2json - nó tạo ra file json khá lớn mà rất khó để phân tích - bởi vì công cụ đặt dữ liệu trong một hàng và sử dụng phức tạp schema, phải mất (ví dụ: 300MB tập tin dữ liệu = ~ 2Gb json.) rất nhiều thời gian để đổ và Cassandra thích thay đổi tên tập tin nguồn theo cơ chế nội bộ của mình
  • COPY - gây timeouts trên EC2 khá nhanh cho số lượng lớn các bản ghi
  • CAPTURE - như trên, nguyên nhân timeouts
  • đọc với pagination - Tôi đã từng timeuuid cho nó, nhưng nó sẽ trả về khoảng 1,5k hồ sơ mỗi giây

tôi sử dụng Amazon EC2 dụ với lưu trữ nhanh, 15 Gb RAM và 4 lõi

Is có bất kỳ lựa chọn tốt hơn cho xuất khẩu gigabyte dữ liệu từ Cassandra để CSV?

+0

Bạn đã xem xét việc tạo ra sự phản bội nhỏ cho điều này? Sử dụng trình điều khiển datastax bạn có thể dễ dàng thực hiện các yêu cầu trích xuất dữ liệu của bạn sau đó tuần tự hóa chúng trong tệp csv (s) với ít hoặc không có mã java? Điều này sẽ đảm bảo bạn có được kết quả chính xác mà bạn muốn (cho một chút nỗ lực). – Ar3s

+0

Hơn nữa, tôi không nhận được phương pháp cũng không phải là vấn đề về "đọc với pagination". – Ar3s

+1

* đọc với pagination * - sử dụng trình điều khiển python Tôi đã cố gắng đọc nội dung bằng giới hạn (giá trị được kiểm tra 100 - 10000, dựa trên TimeUuid) và bù đắp, nó thực sự chậm, Cassandra có thể đọc khoảng 1,5 nghìn bản ghi mỗi giây 3 trường hợp và nhân rộng 2 Tôi không thể tưởng tượng, chỉ đơn giản là sử dụng trình điều khiển sẽ tạo khả năng đọc nhanh, vì mỗi hàng Cassandra phải kiểm tra dữ liệu nút nào được lưu trữ. – KrzysztofZalasa

Trả lời

3

Bởi vì việc sử dụng COPY sẽ khá khó khăn khi bạn đang cố gắng xuất một bảng với hàng triệu hàng từ Cassandra, Vì vậy, những gì tôi đã làm là tạo công cụ đơn giản để lấy dữ liệu bằng đoạn (phân trang) từ bảng cassandra và xuất nó sang CSV.

Nhìn vào số example solution sử dụng thư viện java của tôi từ datastax.

+0

xin vui lòng cung cấp một câu trả lời đầy đủ, không chỉ là một liên kết – slfan

+0

Như tôi đã viết trước đây: Tôi đã thử giải pháp này, nhưng nó rất chậm - nó có thể cung cấp 1,5k hồ sơ mỗi giây. Bạn có điểm chuẩn cho bản sao và 100Gb dữ liệu không? – KrzysztofZalasa

+0

Bảng lớn nhất trong bộ dữ liệu của chúng tôi là: 22gb dữ liệu ~ 122mil hàng ~ được trích xuất trong 444m38.061s. (sử dụng 1 máy chủ cassandra server 4 lõi 8gb ram sata hdd) (khoảng 4.5k hàng/giây, điều này là đủ tốt đối với chúng tôi bởi vì chúng tôi chỉ làm điều này để di chuyển dữ liệu đến một nơi khác) –

Các vấn đề liên quan