좋아, 나는 여기서 변하고있다. 카산드라와 함께 설명 할 수없는 행동이 많습니다. 나는 그들이 카본 드라와 관련이 있는지 없는지조차 확신하지 못합니다. (안 내게로)카산드라 필드 문자열 대 long
create column family cachekey
with comparator = UTF8Type
and column_metadata =
[
{
column_name : accountNumber,
validation_class : UTF8Type
},
{
column_name : homeId,
validation_class : LongType
}
...
];
일부 레코드가 테이블에 추가하고 다음과 같이
나는 (간결성을 위해 모든 열을 표시하지 않음) 테이블을 만들었습니다. 내가 스키마를 표시 할 때 지금, 나는 정말 저를 당혹 내가 지금[[email protected]] show schema;
...
use cachekeydata;
create column family cachekey
with column_type = 'Standard'
and comparator = 'UTF8Type'
and default_validation_class = 'BytesType'
and key_validation_class = 'BytesType'
and read_repair_chance = 0.1
and dclocal_read_repair_chance = 0.0
and gc_grace = 864000
and min_compaction_threshold = 4
and max_compaction_threshold = 32
and replicate_on_write = true
and compaction_strategy = 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'
and caching = 'KEYS_ONLY'
and compression_options = {'sstable_compression' : 'org.apache.cassandra.io.compress.SnappyCompressor'};
를 만든 열을 볼 수없는 이유는 확실하지 않다 : 내 자바 코드에서 데이터를 가져 오는 경우, 내가 널을 얻을 기록의 일부 문자열을 검색 할 때 긴 검색을 시도하지만 포인터 예외 : NullPointerException이 다음
Mac=001DD67CFF46
cidx=<50190074>
cidx=<3832617404583655220>
cidx=<3832617404583655220>
Mac=001DCFE2122C
cidx=<3663580>
:
System.out.println("Mac=" + mac);
System.out.println(" cidx=<" + result.getStringValue("homeId",null) + ">");
System.out.println(" cidx=<" + result.getLongValue("homeId",null) + ">");
System.out.println(" cidx=<" + result.getColumnByName("homeId").getLongValue() + ">");
가 이어집니다. ,
LongSerializer.get().fromBytes(column.getValue());
마지막 : 즉, result.getStringValue (널 (null) "homeId은")이 카산드라 라이브러리 코드 내부에 다음 줄을 실행할 때 3,663,580이 있지만 result.getLongValue는 ("homeId", 널 (null))는 NullPointerException이 발생 반환 CLI를 콘솔에서 위와 같이이 같은 두 개의 레코드를 표시하는 것은 나에게 의심스러운 아무것도 표시되지 않습니다 :
[[email protected]] get cachekey[utf8('001DD67CFF46')];
=> (column=accountNumber, value=30373833373132303730323036, timestamp=1361305382124)
=> (column=corp, value=3037383337, timestamp=1361305382124)
=> (column=homeId, value=3530313930303734, timestamp=1361305382124)
=> (column=zip, value=3130343732, timestamp=1361305382124)
Returned 4 results.
Elapsed time: 70 msec(s).
[[email protected]] get cachekey[utf8('001DCFE2122C')];
=> (column=accountNumber, value=30373830383132333437323032, timestamp=1361305376659)
=> (column=corp, value=3037383038, timestamp=1361305376659)
=> (column=homeId, value=33363633353830, timestamp=1361305376659)
=> (column=zip, value=3036393033, timestamp=1361305376659)
Returned 4 results.
Elapsed time: 45 msec(s).
내 질문 :
- Q1을. 큰 질문입니다. 위 예제에서 널 포인터를 얻는 이유는 무엇입니까?
- Q2. 더 작은 것들 :
- Q2a. 내가 1에서 테이블을 어떻게 설정했는지에 따라 3 정상에서 관찰 한 것입니까?
- Q2b. 왜 내 문자열과 긴 값이 일치하지 않습니까?
'homeId'에 쓰여진 값이 길어도 괜찮습니까? –
테이블을 만들 때 validation_class를 LongType으로 설정했다고 확신합니다. 내가 어떻게 테이블을 채웠는지 모르겠다. 그리고 그것은 본질적으로 나의 질문이다. 내가 테이블을 어떻게 생성했는지, 위에서 설명한 행동을 일으키기 위해 테이블에 데이터를 입력하는 방법은 무엇인가? – Lolo