Какие шаги для запуска Java-класс делает соединение с Hbase?

1
Configuration config = HBaseConfiguration.create();
HTable table = new HTable(config, "myLittleHBaseTable");

то я получаю эту ошибку после создания администратора

Открытие подключения сокета к серверу Не будет попытки аутентификации с использованием SASL (неизвестная ошибка)

Теги:
connection
hbase

2 ответа

0

Это скриншот списка банок в моем проекте, который успешно записывает и читает в и из HBase:

Изображение 174551

В другом посте я спросил, как получить несколько версий одной временной метки. Этот код приведен ниже. Он полностью работает для создания таблицы, вставки значения и получения значения.

Что касается вашего вопроса в точности, я думаю, вам нужно добавить дополнительную информацию в свою конфигурационную часть кода, такую как...

    //config
    Configuration config = HBaseConfiguration.create();
    config.clear();
    config.set("hbase.zookeeper.quorum", HBASE_ZOOKEEPER_QUORUM_IP);
    config.set("hbase.zookeeper.property.clientPort", HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT);
    config.set("hbase.master", HBASE_MASTER);

... где значения этих капитализированных переменных можно увидеть в полном коде ниже:

public static void main(String[] args)
    throws ZooKeeperConnectionException, MasterNotRunningException, IOException, InterruptedException {

    final String HBASE_ZOOKEEPER_QUORUM_IP = "localhost.localdomain"; //set ip in hosts file
    final String HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT = "2181";
    final String HBASE_MASTER = HBASE_ZOOKEEPER_QUORUM_IP + ":60010";

    //identify a data cell with these properties
    String tablename = "characters";
    String row = "johnsmith";
    String family = "capital";
    String qualifier = "A"; 

    //config
    Configuration config = HBaseConfiguration.create();
    config.clear();
    config.set("hbase.zookeeper.quorum", HBASE_ZOOKEEPER_QUORUM_IP);
    config.set("hbase.zookeeper.property.clientPort", HBASE_ZOOKEEPER_PROPERTY_CLIENTPORT);
    config.set("hbase.master", HBASE_MASTER);

    //admin
    HBaseAdmin hba = new HBaseAdmin(config);

    //create a table
    HTableDescriptor descriptor = new HTableDescriptor(tablename);
    descriptor.addFamily(new HColumnDescriptor(family));
    hba.createTable(descriptor);
    hba.close();

    //get the table
    HTable htable = new HTable(config, tablename);

    //insert 10 different timestamps into 1 record
    for(int i = 0; i < 10; i++) {
        String value = Integer.toString(i);
        Put put = new Put(Bytes.toBytes(row));
        put.add(Bytes.toBytes(family), Bytes.toBytes(qualifier), System.currentTimeMillis(), Bytes.toBytes(value));
        htable.put(put);
        Thread.sleep(200); //make sure each timestamp is different
    }

    //get 10 timestamp versions of 1 record
    final int MAX_VERSIONS = 10;
    Get get = new Get(Bytes.toBytes(row));
    get.setMaxVersions(MAX_VERSIONS);
    Result result = htable.get(get);
    byte[] value = result.getValue(Bytes.toBytes(family), Bytes.toBytes(qualifier));  // returns MAX_VERSIONS quantity of values
    String output = Bytes.toString(value);

    //show me what you got
    System.out.println(output); //prints 9 instead of 0 through 9
}
  • 0
    это было полезно, но mongodb был лучшим выбором, чем hbase
-2

У вас есть hbase-site.xml в java classpath? HBase получает информацию о zookeeper из hbas-site.xml и подключается к zookeeper, а затем вы подключаете HBase.

  • 0
    Я думаю, что мой ответ правильный ответ. Вы можете игнорировать эту ошибку «Открытие соединения сокета с сервером не будет пытаться пройти аутентификацию с использованием SASL (неизвестная ошибка)». Но вы должны установить "zookeeper.znode.parent", "hbase.zookeeper.quorum", "hbase.zookeeper.clientPort" в вашей конфигурации HBase.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню