Symfoware

Symfowareについての考察blog

VoldemortにPythonから登録したThrift形式のデータをJavaで取得する

JavaからThriftでシリアライズしたデータをVoldemortに登録。
Pythonで登録されたデータを読み込むことに成功しました。
VoldemortにJavaから登録したThrift形式のデータをPythonで取得する


今度は、PythonからThriftでシリアライズしたデータをVoldemortに登録。
Javaで登録されたデータを読み込んでみます。



Pythonのソース



Pythonのソースコードはこんな感じになりました。


# -*- coding:utf-8 -*-

import logging
import time

#Voldemortアクセス用
from voldemort import StoreClient

#Thriftを使用するため
from thrift.protocol import TBinaryProtocol
from thrift.transport import TTransport

#symfoware.thriftから生成したモジュール
import sys
sys.path.append('./gen-py')
from symfoware.voldemort.ttypes import ThriftData

if __name__ == '__main__':
    
    logging.basicConfig(level=logging.INFO,)
    
    #StoreClientを生成
    s = StoreClient('test', [('192.168.1.250', 6666)])
    
    
    td = ThriftData()
    td.title = "Pythonから"
    td.details = "登録したデータです"
    
    td.list_sample = []
    td.list_sample.append("日本語1")
    td.list_sample.append("日本語2")
    td.list_sample.append("日本語3")
    
    buf = TTransport.TMemoryBuffer()
    protocol = TBinaryProtocol.TBinaryProtocol(buf)
    
    td.write(protocol)
    
    s.put("key", buf.getvalue())



実行して、データを登録しておきます。





Javaのソース



Javaのソースはこんな感じ。


package com.fc2.blog68.symfoware.voldemort;

import voldemort.client.ClientConfig;
import voldemort.client.SocketStoreClientFactory;
import voldemort.client.StoreClient;
import voldemort.client.StoreClientFactory;

public class Sample {
    public static void main(String[] args) {
        
        String[] bootstrapUrls = new String[]{"tcp://192.168.1.250:6666"};
        
        ClientConfig cc = new ClientConfig();
        cc.setBootstrapUrls(bootstrapUrls);
        
        StoreClientFactory factory = new SocketStoreClientFactory(cc);
        
        //最初にキーの型、二番目に登録するデータの型を定義する
        StoreClient<String, ThriftData> client = factory.getStoreClient("test");
        
        //Pythonから登録したデータを検索
        ThriftData data = client.getValue("key");
        System.out.println(data.getTitle());
        System.out.println(data.getDetails());
        
        for (int i = 0; i < data.getList_sampleSize(); i++) {
            System.out.println(data.getList_sample().get(i));
        }
        
        factory.close();

    }
}






実行してみると・・・



[2010-04-24 16:34:06,059 voldemort.client.DefaultStoreClient] INFO bootstrapping metadata.
Pythonから
登録したデータです
日本語1
日本語2
日本語3




狙い通り。





関連記事

テーマ:データベース - ジャンル:コンピュータ

  1. 2010/04/26(月) 12:09:22|
  2. Voldemort
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Voldemortをjmxでリモート監視する | ホーム | VoldemortにJavaから登録したThrift形式のデータをPythonで取得する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/389-99434452
この記事にトラックバックする(FC2ブログユーザー)