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 server.<hbaseinstallationpath>/bin/hbase thrift -threadpool start

于 2012-07-20T10:49:00.663 回答