2012-08-23 2 views
2

Hector (또는 다른 클라이언트)를 사용하여 Cassandra에 다른 이름으로 Column Family의 사본을 만들고 싶습니다. 가장 빠른 방법이 있습니까?카산드라에서 칼럼 패밀리를 복사하는 가장 빠른 방법은 무엇입니까?

감사

+0

명확하게하기 : 일정량의 데이터와 새로운 열 패밀리가 포함 된 기존 열 패밀리에 대해 원본과 동일한 스키마 및 데이터 내용을 사용하여 새로운 이름으로 열 패밀리를 작성하십시오. 그 맞습니까? 노드 수, 정책 수 등과 같은 다른 메타 데이터는 어떻습니까? –

+0

사실 나는 하나의 열 패밀리의 모든 데이터를 다른 열에 복사하려고합니다. 다른 이름으로 작성된 한 열 패밀리의 끝에 동일한 두 개의 복사본이 있습니다. 한 행을 행마다 반복하고 열을 읽고 다른 열 패밀리에 쓰는 방법을 사용할 수 있습니다. 이 작업을 수행하는 데 더 빠른 방법을 원합니다. 이 작업을 수행하는 더 빠른 방법이 있습니까? –

+0

이와 비슷한 것 http://stackoverflow.com/questions/11682197/keyspace-schema-import-and-export-cassandra/11683309#11683309 – Tamil

답변

3

cassandra hadoop 통합은 전체 줄 패밀리를 읽고 맵 축소 작업의 입력으로 사용합니다. 또한 열 패밀리에 대량으로 출력 할 수 있습니다. org.apache.cassandra.hadoop 패키지의 코드를 읽은 다음 수행 할 작업에 대한 아이디어를 얻으십시오.

읽을 때 어떤 노드에 어떤 토큰이 있는지 파악한 다음 해당 토큰 범위를 사용하여 get_range_slice을 수행합니다 (토큰 범위를 관리 가능한 청크로 너무 분할 함). 쓰기의 경우 Bulk * 클래스를 사용하는 경우 SSTable을 생성 한 다음 cassandra에 업로드하여 위의 해결 방법과 비슷한 작업을 수행 할 수 있습니다.

sstable2json을 사용하여 위의 다른 대답이 훨씬 더 효율적이지만 훨씬 효과적 일 수 있다고 생각합니다.

2
당신은 그것을 읽을 sstable2json을 사용할 수 있습니다

, 다음 json2sstable 새 CF를로 다시 작성

+0

프로그래밍 방식으로이 작업을 수행하고 싶습니다. 어떻게해야할까요? 감사합니다 –

+0

이 유틸리티에 대한 코드는 오픈 소스이므로 그냥 사용하십시오! –

2

내 대답은 당신이 이미하고 있다고 말하는 줄마다 반복적으로 반복 할 것입니다. 단 하나의 개선점은 KeySlice를 사용하여 요청 당 여러 개의 키와 여러 행을 가져 오는 것입니다.

관련 문제