2016-08-23 2 views
1

Int에서 varInt 로의 변경을 지원하지 않으므로 cassandra 테이블 컬럼을 변경 (유형을 Int에서 Long으로 변경)하는 유즈 케이스가 있습니다.cassandra 클러스터 컬럼 변경을 마이그레이션하는 방법

그러나 일부 테이블에서는이 열이 클러스터 열이므로이 값을 변경할 방법이 없습니다.

이 경우를 처리하는 가장 좋은 방법은 무엇입니까?

+0

저도 같은 문제와의 페이지가 있습니다. – Chobicus

+0

글쎄, 카산드라 코드를 체크 아웃했는데 문서가 잘못 나온 것 같습니다. 클러스터링 컬럼 유형은 변경할 수 없습니다. – Chobicus

+0

CLUSTERING 열의 경우 AlterTableStatement.validateAlter (CFMetaData, ColumnDefinition, AbstractType ) 메서드는 IntegerType 및 Int32Type에 구현되어 있지 않은 isCompatibleWith 메서드를 확인하므로 기본적으로이 두 가지 형식에 대한 형식 검사 인 FALSE가 사용됩니다. – Chobicus

답변

2

Cassandra의 클러스터링 열을 변경할 수 없습니다. 새 테이블을 만들고 타사 응용 프로그램 (cqlsh COPY이 가장 단순하거나 Spark과 같은)을 사용하여 해당 테이블에 데이터를로드해야합니다. 테이블 이름의 변경을 허용 할 수 없다면 데이터를 백업하고 이전 테이블을 삭제 한 다음 적절한 유형으로 테이블을 다시 작성해야합니다. https://docs.datastax.com/en/cql/3.1/cql/cql_reference/cql_data_types_c.html#concept_ds_wbk_zdt_xj__cql_data_type_compatibility 가 INT-> varint이 가능해야한다고 말한다 :

관련 문제