2011-04-29 167 views
3

我希望使用scribe從Erlang應用程序導出一些數據,但是我在運行Thrift客戶端時遇到問題。我在erlang lib目錄中安裝Thrift。我使用的是:節儉0.6.1如何加載Erlang的thrift客戶端

我發現一些示例代碼通過節儉從二郎連接到文士

{ok, C} = thrift_client:start_link("localhost", 1463, scribe_thrift, 
            [{strict_read, false}, 
             {strict_write, false}, 
             {framed, true}]), 

但Erlang是返回此錯誤:

** exception error: undefined function thrift_client:start_link/4 

當我嘗試運行application:start(thrift),一會兒我看到一些代碼完成thrift*

7> thrift_client: 
    call/3   close/1  module_info/0 module_info/1 new/2   
    send_call/3 

並且沒有方法start_link

回答

5

我想你想這幾天像thrift_client_util:new(Host, Port, ProtoModule, Options)

而你的情況應該是:

thrift_client_util:new("localhost", 1463, scribe_thrift, 
         [{strict_read, false}, 
         {strict_write, false}, 
         {framed, true}]). 

而且很重要的一點要記住,在二郎節儉API是所有調用返回你有一個新的客戶端狀態值,你必須使用它來進行後續的調用。兩次使用客戶端狀態值會導致哭鬧和咬牙切齒。

+0

感謝它爲我工作! – 2011-04-30 07:27:52

+0

從這個[post](http://stackoverflow.com/questions/157188​​11/why-does-the-hbase-thrift-api-always-return-a-thrift-client-connection)的答案的觀察表明,返回的客戶端狀態與原始狀態相同。 – gextra 2013-07-21 13:03:13

1

幾個月前,我把節儉與我的項目整合在一起。獲取客戶端需要一些初始化步驟。

 

    {ok, TFactory} = 
    thrift_socket_transport:new_transport_factory(
     "localhost", 8899, []), 
    {ok, PFactory} = 
    thrift_binary_protocol:new_protocol_factory(TFactory, []), 
    {ok, Protocol} = PFactory(), 
    {ok, Client} = thrift_client:new(Protocol, scribe_thrift), 

更多的上下文,你可以看看我的git倉庫中的module

+0

使用thrift_client_util:new的archaelus的回覆是此答案的包裝。 – gextra 2013-11-01 10:59:13