본문 바로가기

Cassandra

Cassandra - Java를 이용하여 데이터 쓰기 (column family)


준비물 : cassandra와 통신하기 위한 라이브러리, 그 라이브러리가 필요로 하는 라이브러리들


cassandra_thrift.jar


libthrift-0.9.0.jar


slf4j-api-1.5.8.jar


slf4j-log4j12-1.5.8.jar


log4j-1.2.14.jar



상황 :

Hotelier 라는 키스페이스에 Hotel 이라는 칼럼패밀리가 있다.

이 칼럼패밀리에 아래 데이터를 "AZC_043"키로 입력한다.

name : Cambria Suites Hayden

phone : 480-444-4444

address : 400 N. Hayden

city : Scottsdale

state : AZ

zip : 85255




0. 위 준비물들(라이브러리) 들의 클래스 패스를 추가한다.



1. 카산드라 서버에 접속하기

※ cassandra.yaml 파일 내부에 있는 rpc_address: localhost 를 rpc_address: 192.168.0.11 와 같이 서버 아이피로 변경해준다.

TFramedTransport tf = new TFramedTransport(new TSocket("192.168.0.11", 9160));
TProtocol proto = new TBinaryProtocol(tf);
Cassandra.Client client = new Cassandra.Client(proto);
tr.open();
		
client.set_keyspace("Hotelier" /*KeySpace*/);

서버와 연결된 Cassandra Client 가 생성된다.



2. ColumnParent 정의

ColumnParent parent = new ColumnParent("Hotel"/*Column Family*/);



3. Row Key 값, timestamp 정의

ByteBuffer key = ByteBuffer.wrap("AZC_043".getBytes("UTF-8"));
Long timestamp = System.currentTimeMillis();



4. Column 생성

Column nameCol = createColumn("name".getBytes("UTF-8"), "Cambria Suites Hayden".getBytes("UTF-8"), timestamp);
Column phoneCol = createColumn("phone".getBytes("UTF-8"), "480-444-4444".getBytes("UTF-8"), timestamp);
Column addressCol = createColumn("address".getBytes("UTF-8"), "400 N. Hayden".getBytes("UTF-8"), timestamp);
Column cityCol = createColumn("city".getBytes("UTF-8"), "Scottsdale".getBytes("UTF-8"), timestamp);
Column stateCol = createColumn("state".getBytes("UTF-8"), "AZ".getBytes("UTF-8"), timestamp);
Column zipCol = createColumn("zip".getBytes("UTF-8"), "85255".getBytes("UTF-8"), timestamp);



5. 입력

client.insert(key, parent, nameCol, ConsistencyLevel.ONE);
client.insert(key, parent, phoneCol, ConsistencyLevel.ONE);
client.insert(key, parent, addressCol, ConsistencyLevel.ONE);
client.insert(key, parent, cityCol, ConsistencyLevel.ONE);
client.insert(key, parent, stateCol, ConsistencyLevel.ONE);
client.insert(key, parent, zipCol, ConsistencyLevel.ONE);



반응형