1

私はThriftが初めてです。ubuntu 10.10で次のThriftプログラムを使用してHbaseでテーブル(「サンプル」)を作成しようとしていますが、これが正しいかどうか誰か教えてください。

#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <poll.h>

#include <iostream>

#include <boost/lexical_cast.hpp>
#include <protocol/TBinaryProtocol.h>
#include <transport/TSocket.h>
#include <transport/TTransportUtils.h>

#include "Hbase.h"

using namespace apache::thrift;
using namespace apache::thrift::protocol;
using namespace apache::thrift::transport;
using namespace apache::hadoop::hbase::thrift;
using namespace std;
int main()
{
    boost::shared_ptr<TTransport> socket(new TSocket("localhost", 60010));
    boost::shared_ptr<TTransport> transport(new TBufferedTransport(socket));
    boost::shared_ptr<TProtocol> protocol(new TBinaryProtocol(transport));
    HbaseClient client1(protocol);
    try
    {
        transport->open();
        string tableName("Sample");
        vector<ColumnDescriptor> columns;
        columns.push_back(ColumnDescriptor());
        columns.back().name = "cf:";
        columns.back().maxVersions = 10;
        columns.push_back(ColumnDescriptor());
        columns.back().name = "test";
        try {   
            client1.createTable(tableName, columns);
        } catch (const AlreadyExists &ae) {
            std::cerr << "WARN: " << ae.message << std::endl;
        }
    }
    catch (const TException &tx) {
        std::cerr << "ERROR: " << tx.what() << std::endl;
    }

    return 0;
}

しかし、私はこの場所で次の例外を受けていますclient1.createTable(tableName, columns);

ERROR: No more data to read.

これを解決するのを手伝ってください。

4

1 に答える 1

1

わかりました。hbase でthrift サーバーを起動する必要があります。.<hbaseinstallationpath>/bin/hbase thrift -threadpool start

于 2012-07-20T10:49:00.663 に答える