ошибка: конструктор HTable в классе HTable не может быть применен к данным типам - PullRequest
1 голос
/ 08 февраля 2020

Я работаю, имел oop hbase . Я просто написал простую программу для вставки базы данных базы данных. Когда я запускаю программу, я получаю следующую ошибку:

InsertData. java: 31: ошибка: конструктор HTable в классе HTable не может быть применен к данным типам; HTable hTable = new HTable ("emp", conn);

Мой код:


import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;

public class InsertData {

   public static void main(String[] args) throws IOException {

      // Instantiating Configuration class
      Configuration config = HBaseConfiguration.create();

      // Instantiating HTable class
      HTable hTable = new HTable(config, "emp");

      // Instantiating Put class
      // accepts a row name.
      Put p = new Put(Bytes.toBytes("row1")); 

      // adding values using add() method
      // accepts column family name, qualifier/row name ,value
      p.add(Bytes.toBytes("personal"),
      Bytes.toBytes("name"),Bytes.toBytes("raju"));

      p.add(Bytes.toBytes("personal"),
      Bytes.toBytes("city"),Bytes.toBytes("hyderabad"));

      p.add(Bytes.toBytes("professional"),Bytes.toBytes("designation"),
      Bytes.toBytes("manager"));

      p.add(Bytes.toBytes("professional"),Bytes.toBytes("salary"),
      Bytes.toBytes("50000"));

      // Saving the put Instance to the HTable.
      hTable.put(p);
      System.out.println("data inserted");

      // closing HTable
      hTable.close();
   }
}


Моя помощь?

Спасибо

1 Ответ

1 голос
/ 08 февраля 2020

Я не уверен, какую версию HBase вы используете, но некоторое время HTable устарело (см. HTable API документы ) и теперь является чисто внутренним методом. Вместо этого используйте Table (убедитесь, что версия соответствует вашему развертыванию HBase):

Вы должны зависеть от org.apache.hbase:hbase-client:<VERSION> (нет необходимости в каких-либо других зависимостях HBase) и использовать следующие методы:

try {
  Configuration conf = HBaseConfiguration.create();
  Connection connection = ConnectionFactory.createConnection(conf);
  Table table = connection.getTable(TableName.valueOf("emp"));

  Put p = new Put(Bytes.toBytes("row1"));
  p.add(Bytes.toBytes("personal"), Bytes.toBytes("name"),Bytes.toBytes("raju"));

  table.put(p);
} finally {
  table.close();
  connection.close();
}
...