2016-08-23 4 views
1

IntからvarIntへの変更がサポートされていないため、cassandraテーブルの列を変更するための使用例があります(型をIntからLongに変更します)。cassandraクラスタの列変更を移行する方法

しかし、テーブルの中には、この列がクラスタ列であり、これを変更する方法がありません。

このケースを処理する最善の方法は何か不思議です。

+0

私は同じ問題とのページを持っています。 – Chobicus

+0

さて、私はCassandraのコードをチェックアウトしました。ドキュメントが間違っているようです。クラスタ化列のタイプは変更できません。 – Chobicus

+0

CLUSTERING列の場合、メソッドAlterTableStatement.validateAlter(CFMetaData、ColumnDefinition、AbstractType )は、IntegerTypeとInt32Typeに実装されていないisCompatibleWithメソッドをチェックします。デフォルトでは、これらの2つの型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が可能であることを述べている:

関連する問題