Ben cassandra ve hector için yeni değilim, bu yüzden cql sorguları yürütmeye çalışıyorum ama sorun tüm sütunlar tür dizisi değil, bu yüzden dow Ben "kullanıcılardan * seçin" sorgusu yürütmek?cql sorguları java istemci hector ile cassandra dışında farklı veri almak için nasıl kullanılır
Benim sütun aile şuna benzer:
UPDATE COLUMN FAMILY users
WITH comparator = UTF8Type
AND key_validation_class=UTF8Type
AND column_metadata = [
{column_name: full_name, validation_class: UTF8Type}
{column_name: email, validation_class: UTF8Type}
{column_name: state, validation_class: UTF8Type, index_type: KEYS}
{column_name: gender, validation_class: UTF8Type}
{column_name: birth_year, validation_class: LongType, index_type: KEYS}
{column_name: education, validation_class: UTF8Type}
];
Ben sorguyu yürütmek için şu kodu kullanın:
CqlQuery<String, String, String> cqlQuery = new CqlQuery<String, String, String>(Keyspace,stringSerializer,stringSerializer,stringSerializer);
cqlQuery.setQuery("select * from users");
QueryResult<CqlRows<String, String, String>> result = cqlQuery.execute();
if (result != null && result.get() != null) {
List<Row<String, String, String>> list = result.get().getList();
for (Row row : list) {
System.out.println(".");
List columns = row.getColumnSlice().getColumns();
for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
HColumn column = (HColumn) iterator.next();
System.out.print(column.getName() + ":" + column.getValue()
+ "\t");
}
System.out.println("");
}
}
Ama çünkü doğrulama sınıfı ile 'birth_year' sütununun
Uzun dayana Değeri al. aşağıdaki sonuç sadece bir kayıt yoktur varsayarak olsun:KEY:Carl birth_year: 'strange chars?' full_name:Carl Smith gender:M eduction:electrician state:LA
Bu benim sorguyu değiştirirseniz:
CqlQuery<String, String, Long> cqlQuery = new CqlQuery<String, String, Long>
TutorialBase.tutorialKeyspace, stringSerializer, stringSerializer, longSerializer);
cqlQuery.setQuery("select birth_year from users");
çalıştığını daha.
Bunu yalnızca bir sorgu ile nasıl yapabilirim ve sütun ailesinin satırlarında boole ve float gibi daha fazla veri türü varsa ne yapabilirim?
Merhaba libjack, tepkiniz için teşekkürler. Bunun, yalnızca bir sütun ailesindeki tüm sütunların varsayılan validasyon sınıfı olarak byteBuffer olması durumunda mümkün olduğunu mu söylüyorsunuz? İstediğim şey tam olarak bu değil çünkü cassandra'ya veri eklerken geçerli verilerin kontrolü çalışmaz. Birth_year sütununa bir dize eklemek mümkün olabilir. Kodunuzu deniyorum, ancak 'getLong()' yöntemi tanınmadı. – Rubenski
Neyin yanlış olduğunu buldum: "col.getValue(). GetLong()" "column.getValueBytes() olmalıdır. GetLong()" Benim önceki soru çözüldü. Bir sütun ailesinde birden çok validation_classe olması mümkündür. – Rubenski
Sağ, getLong() bir ByteBuffer yöntemidir, bu nedenle getValue() bir ByteBuffer değerini yalnızca HColumn için belirtilen tipte bir ByteBuffer döndürecektir: – libjack