2011-04-29 165 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