Cassandraãã¤ã³ã¹ãã¼ã«ãã¦ãPHPã¯ã©ã¤ã¢ã³ããã¤ã³ã¹ãã¼ã«ãããã¨æã£ãã®ã ããThriftã®ã¤ã³ã¹ãã¼ã«ãå¿
è¦ã¨ããã®ã§ã¤ã³ã¹ãã¼ã«ãããã¨ãããphpcassaã使ãã°ãThriftã¯ã¤ã³ã¹ãã¼ã«ããã«ããã orzãã¾ãå¹¾ã¤ããããã©ããããã£ãã®ã§ã¡ã¢ãã¦ãããã¨æãã
ç°å¢ã¯Ubuntu 10.10ãCassandraã¯ã¤ã³ã¹ãã¼ã«æ¸ã¿ã
Cassandraのインストール
å¿ è¦ãªã©ã¤ãã©ãª
ãã®ãããã¯å
¬å¼wikiã«ããå
容ããã®ã¾ã¾apt-getãã¦ããã°OKã
GettingDebianPackages - Thrift Wiki
# apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev
ãã¦ã³ãã¼ããã¤ã³ã¹ãã¼ã«
http://thrift.apache.org/download/
# cd /usr/local/src
# wget http://ftp.kddilabs.jp/infosystems/apache//thrift/0.7.0/thrift-0.7.0.tar.gz
# tar -zxvf thrift-0.7.0.tar.gz
# cd thrift-0.7.0
configureã§ãªããpermission denied
# chmod 755 *
# ./configure
ãããã©ãããã®ï¼ã
2011/9/1 追è¨ã
thrift-0.7.0ãåºã¦ããã®ã§ãã«ããããã¨ããã configureã«å®è¡å¯è½ãã©ã°ãç«ã£ã¦ãããããã«ãã§ãã¾ããã§ãããã©ããã¢ã¼ã«ã¤ããå£ãã¦ããæ°ããã¾ããä»ã®ãã¡ã¤ã«ãæªããã§ãã
install-shãå®è¡å¯è½ã«ãªã£ã¦ã¾ãããã以ä¸ã®ã³ãã³ãã§ä¿®æ£ãã¦ãã ããã
chmod +x configure install-sh
http://ohnaka.jp/blog/2011/08/493
å®ã«æåãæªããã®ã§githubãããã¦ã³ãã¼ãã
GitHub - apache/thrift: Mirror of Apache Thrift
# tar -zxvf apache-thrift-8514755.tar.gz
# cd apache-thrift-8514755
# ./bootstrap.sh
# ./configure
ãããã©ãããã®ï¼ã
makeããã¨ãªããfastbinary.cã§ããããPythoné¢ä¿ã®ã©ã¤ãã©ãªã®æ§åã以ä¸ã¨ã©ã¼æã
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.6 -c src/protocol/fastbinary.c -o
build/temp.linux-x86_64-2.6/src/protocol/fastbinary.o
src/protocol/fastbinary.c:20:20: error: Python.h: No such file or directory
src/protocol/fastbinary.c:21:23: error: cStringIO.h: No such file or directory
src/protocol/fastbinary.c:138: error: expected specifier-qualifier-list before âPyObjectâ
src/protocol/fastbinary.c:148: error: expected specifier-qualifier-list before âPyObjectâ
src/protocol/fastbinary.c:157: error: expected specifier-qualifier-list before âPyObjectâ
src/protocol/fastbinary.c:168: error: expected specifier-qualifier-list before âPyObjectâ
src/protocol/fastbinary.c:178: error: expected specifier-qualifier-list before âPyObjectâ
src/protocol/fastbinary.c:183: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â*â token
src/protocol/fastbinary.c:185: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â*â token
src/protocol/fastbinary.c: In function âcheck_ssize_t_32â:
src/protocol/fastbinary.c:190: warning: implicit declaration of function âPyErr_Occurredâ
src/protocol/fastbinary.c:194: warning: implicit declaration of function âPyErr_SetStringâ
src/protocol/fastbinary.c:194: error: âPyExc_OverflowErrorâ undeclared (first use in this function)
src/protocol/fastbinary.c:194: error: (Each undeclared identifier is reported only once
src/protocol/fastbinary.c:194: error: for each function it appears in.)src/protocol/fastbinary.c: At top level:
src/protocol/fastbinary.c:201: error: expected â)â before â*â token
src/protocol/fastbinary.c:220: error: expected declaration specifiers or â...â before âPyObjectâsrc/protocol/fastbinary.c: In function âparse_set_list_argsâ:
src/protocol/fastbinary.c:221: warning: implicit declaration of function âPyTuple_Sizeâsrc/protocol/fastbinary.c:221: error: âtypeargsâ undeclared (first use in this function)
src/protocol/fastbinary.c:222: error: âPyExc_TypeErrorâ undeclared (first use in this function)
src/protocol/fastbinary.c:226: warning: implicit declaration of function âPyInt_AsLongâ
src/protocol/fastbinary.c:226: warning: implicit declaration of function âPyTuple_GET_ITEMâ
src/protocol/fastbinary.c:231: error: âSetListTypeArgsâ has no member named âtypeargsâ
src/protocol/fastbinary.c: At top level:
src/protocol/fastbinary.c:237: error: expected declaration specifiers or â...â before âPyObjectâ
src/protocol/fastbinary.c: In function âparse_map_argsâ:src/protocol/fastbinary.c:238: error: âtypeargsâ undeclared (first use in this function)
src/protocol/fastbinary.c:239: error: âPyExc_TypeErrorâ undeclared (first use in this function)
src/protocol/fastbinary.c:253: error: âMapTypeArgsâ has no member named âktypeargsâsrc/protocol/fastbinary.c:254: error: âMapTypeArgsâ has no member named âvtypeargsâ
src/protocol/fastbinary.c: At top level:
src/protocol/fastbinary.c:260: error: expected declaration specifiers or â...â before âPyObjectâ
src/protocol/fastbinary.c: In function âparse_struct_argsâ:
src/protocol/fastbinary.c:261: error: âtypeargsâ undeclared (first use in this function)
src/protocol/fastbinary.c:262: error: âPyExc_TypeErrorâ undeclared (first use in this function)
src/protocol/fastbinary.c:266: error: âStructTypeArgsâ has no member named âklassâ
src/protocol/fastbinary.c:267: error: âStructTypeArgsâ has no member named âspecâ
src/protocol/fastbinary.c: At top level:
src/protocol/fastbinary.c:273: error: expected declaration specifiers or â...â before âPyObjectâ
src/protocol/fastbinary.c: In function âparse_struct_item_specâ:
src/protocol/fastbinary.c:276: error: âspec_tupleâ undeclared (first use in this function)
src/protocol/fastbinary.c:277: error: âPyExc_TypeErrorâ undeclared (first use in this function)
src/protocol/fastbinary.c:291: error: âStructItemSpecâ has no member named âattrnameâ
src/protocol/fastbinary.c:292: error: âStructItemSpecâ has no member named âtypeargsâ
src/protocol/fastbinary.c:293: error: âStructItemSpecâ has no member named âdefvalâ
src/protocol/fastbinary.c: At top level:
src/protocol/fastbinary.c:304: error: expected â)â before â*â token
src/protocol/fastbinary.c:309: error: expected â)â before â*â token
src/protocol/fastbinary.c:314: error: expected â)â before â*â token
src/protocol/fastbinary.c:319: error: expected â)â before â*â token
src/protocol/fastbinary.c:324: error: expected â)â before â*â token
src/protocol/fastbinary.c:338: error: expected â)â before â*â token
src/protocol/fastbinary.c:584: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â*â token
src/protocol/fastbinary.c: In function âfree_decodebufâ:
src/protocol/fastbinary.c:613: warning: implicit declaration of function âPy_XDECREFâ
src/protocol/fastbinary.c:613: error: âDecodeBufferâ has no member named âstringiobufâ
src/protocol/fastbinary.c:614: error: âDecodeBufferâ has no member named ârefill_callableâ
src/protocol/fastbinary.c: At top level:
src/protocol/fastbinary.c:618: error: expected declaration specifiers or â...â before âPyObjectâ
src/protocol/fastbinary.c: In function âdecode_buffer_from_objâ:
src/protocol/fastbinary.c:619: error: âDecodeBufferâ has no member named âstringiobufâ
src/protocol/fastbinary.c:619: warning: implicit declaration of function âPyObject_GetAttrâ
src/protocol/fastbinary.c:619: error: âobjâ undeclared (first use in this function)
src/protocol/fastbinary.c:619: error: â_intern_cstringio_bufâ undeclared (first use in this function)
src/protocol/fastbinary.c:620: error: âDecodeBufferâ has no member named âstringiobufâ
src/protocol/fastbinary.c:624: warning: implicit declaration of function âPycStringIO_InputCheckâ
src/protocol/fastbinary.c:624: error: âDecodeBufferâ has no member named âstringiobufâ
src/protocol/fastbinary.c:626: error: âPyExc_TypeErrorâ undeclared (first use in this function)
src/protocol/fastbinary.c:630: error: âDecodeBufferâ has no member named ârefill_callableâ
src/protocol/fastbinary.c:630: error: â_intern_cstringio_refillâ undeclared (first use in this function)
src/protocol/fastbinary.c:632: error: âDecodeBufferâ has no member named ârefill_callableâ
src/protocol/fastbinary.c:637: warning: implicit declaration of function âPyCallable_Checkâ
src/protocol/fastbinary.c:637: error: âDecodeBufferâ has no member named ârefill_callableâ
src/protocol/fastbinary.c: In function âreadBytesâ:
src/protocol/fastbinary.c:653: error: âPycStringIOâ undeclared (first use in this function)
src/protocol/fastbinary.c:653: error: âDecodeBufferâ has no member named âstringiobufâ
src/protocol/fastbinary.c:660: error: âPyObjectâ undeclared (first use in this function)
src/protocol/fastbinary.c:660: error: ânewiobufâ undeclared (first use in this function)
src/protocol/fastbinary.c:663: warning: implicit declaration of function âPyObject_CallFunctionâ
src/protocol/fastbinary.c:664: error: âDecodeBufferâ has no member named ârefill_callableâ
src/protocol/fastbinary.c:664: error: âNULLâ undeclared (first use in this function)
src/protocol/fastbinary.c:670: warning: implicit declaration of function âPy_CLEARâ
src/protocol/fastbinary.c:670: error: âDecodeBufferâ has no member named âstringiobufâ
src/protocol/fastbinary.c:671: error: âDecodeBufferâ has no member named âstringiobufâ
src/protocol/fastbinary.c:673: error: âDecodeBufferâ has no member named âstringiobufâ
src/protocol/fastbinary.c:681: error: âPyExc_TypeErrorâ undeclared (first use in this function)
src/protocol/fastbinary.c: In function âcheckTypeByteâ:
src/protocol/fastbinary.c:745: error: âPyExc_TypeErrorâ undeclared (first use in this function)
src/protocol/fastbinary.c: In function âskipâ:
src/protocol/fastbinary.c:857: error: âPyExc_TypeErrorâ undeclared (first use in this function)
src/protocol/fastbinary.c: At top level:
src/protocol/fastbinary.c:870: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â*â token
src/protocol/fastbinary.c:874: error: expected declaration specifiers or â...â before âPyObjectâ
src/protocol/fastbinary.c:874: error: expected declaration specifiers or â...â before âPyObjectâ
src/protocol/fastbinary.c: In function âdecode_structâ:
src/protocol/fastbinary.c:875: error: âspec_seqâ undeclared (first use in this function)
src/protocol/fastbinary.c:883: error: âPyObjectâ undeclared (first use in this function)
src/protocol/fastbinary.c:883: error: âitem_specâ undeclared (first use in this function)
src/protocol/fastbinary.c:884: error: âfieldvalâ undeclared (first use in this function)
src/protocol/fastbinary.c:884: error: âNULLâ undeclared (first use in this function)
src/protocol/fastbinary.c:901: error: âPy_Noneâ undeclared (first use in this function)
src/protocol/fastbinary.c:912: error: too many arguments to function âparse_struct_item_specâ
src/protocol/fastbinary.c:917: error: âPyExc_TypeErrorâ undeclared (first use in this function)
src/protocol/fastbinary.c:924: warning: implicit declaration of function âdecode_valâ
src/protocol/fastbinary.c:924: error: âStructItemSpecâ has no member named âtypeargsâ
src/protocol/fastbinary.c:929: warning: implicit declaration of function âPyObject_SetAttrâ
src/protocol/fastbinary.c:929: error: âoutputâ undeclared (first use in this function)
src/protocol/fastbinary.c:929: error: âStructItemSpecâ has no member named âattrnameâ
src/protocol/fastbinary.c:930: warning: implicit declaration of function âPy_DECREFâ
src/protocol/fastbinary.c: At top level:
src/protocol/fastbinary.c:942: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â*â token
src/protocol/fastbinary.c:1160: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â*â token
src/protocol/fastbinary.c:1195: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before âThriftFastBinaryMethodsâ
src/protocol/fastbinary.c:1204: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before âinitfastbinaryâ
error: command 'gcc' failed with exit status 1
make[3]: *** [all-local] ã¨ã©ã¼ 1
make[3]: ãã£ã¬ã¯ã㪠`/usr/local/src/apache-thrift-8514755/lib/py' ããåºã¾ã
make[2]: *** [all-recursive] ã¨ã©ã¼ 1
make[2]: ãã£ã¬ã¯ã㪠`/usr/local/src/apache-thrift-8514755/lib' ããåºã¾ã
make[1]: *** [all-recursive] ã¨ã©ã¼ 1
make[1]: ãã£ã¬ã¯ã㪠`/usr/local/src/apache-thrift-8514755' ããåºã¾ã
make: *** [all] ã¨ã©ã¼ 2
ggrã¨æ¬¡ã®æ
å ±ãããã
ThriftをWindows + Pythonで使用する(簡易版) - Symfoware
lib/py/setup.pyãPythonç¨ã®ã©ã¤ãã©ãªãªã®ã§ããã®ãªãã«ããfastbinaryã«é¢ããè¨è¿°ãã³ã¡ã³ãã¢ã¦ãã
include_dirs = [] if sys.platform == 'win32': include_dirs.append('compat/win32') #fastbinarymod = Extension('thrift.protocol.fastbinary', # sources = ['src/protocol/fastbinary.c'], # include_dirs = include_dirs, # ) setup(name = 'thrift', version = '0.8.0-dev', description = 'Python bindings for the Apache Thrift RPC system', author = ['Thrift Developers'], author_email = ['[email protected]'], url = 'http://thrift.apache.org', license = 'Apache License 2.0', packages = [ 'thrift', 'thrift.protocol', 'thrift.transport', 'thrift.server', ], package_dir = {'thrift' : 'src'}, #ext_modules = [fastbinarymod],
該å½ç®æãã³ã¡ã³ãã¢ã¦ãããå¾ãmake && make installã
# make && make install
次ã®ã³ãã³ããå©ãã¦ã¿ã¦ãã¼ã¸ã§ã³ãåºããããªãåé¡ãªãã
# thrift -version
ä¸å¿ãããã§thriftã®ã¤ã³ã¹ãã¼ã«ã¯å®äºãCassandra-phpã¯ã©ã¤ã¢ã³ãã«ã¤ãã¦ã¯ææ¥ã«ã§ãâ¦ã