【问题标题】:Creation of table in Hbase using Java API使用 Java API 在 Hbase 中创建表
【发布时间】:2017-12-12 03:51:04
【问题描述】:
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;

public class CreateTable {

    public static void main(String[] args) throws IOException {
        Configuration con = HBaseConfiguration.create();
        HBaseAdmin admin = new HBaseAdmin(con);

        HTableDescriptor ht = new HTableDescriptor("emp");

        ht.addFamily(new HColumnDescriptor("add"));
        ht.addFamily(new HColumnDescriptor("dept"));

        admin.createTable(ht);

        System.out.println("Table Created");
    }
}

我已经使用上面的代码创建了 Hbase 表。我已经下载了所有需要的罐子,并将它们添加为出现错误时。但是仍然收到很多与动物园管理员相关的错误。 我的疑问是,在创建表之前我是否必须使用 JAVA API 连接 Zookeeper。我正在使用 JDK 1.8 请指导我使用 JAVA API 在 Hbase 中创建表的确切过程。这些是 Zookeeper 遇到的以下错误,但我添加了 Zookeeper Jar。 17/12/11 12:44:10 INFO zookeeper.ZooKeeper:客户端环境:zookeeper.version=3.3.1-942149,建于 05/07/2010 17:14 GMT 17/12/11 12:44:10 INFO zookeeper.ZooKeeper:客户端环境:host.name=quickstart.cloudera 17/12/11 12:44:10 INFO zookeeper.ZooKeeper:客户端环境:java.version=1.8.0_144 17/12/11 12:44:10 INFO zookeeper.ZooKeeper:客户端环境:java.vendor=Oracle Corporation 17/12/11 12:44:10 INFO zookeeper.ZooKeeper:客户端环境:java.home=/home/cloudera/jdk1.8.0_144/jre 17/12/11 12:44:10 INFO zookeeper.ZooKeeper:客户端环境:java.class.path=/home/cloudera/workspace/HbaseTbl/bin:/home/cloudera/Downloads/apache-logging-log4j.jar: /home/cloudera/Downloads/hadoop-core-0.20.2-cdh3u0.jar:/home/cloudera/Downloads/hbase-0.94.0.jar:/home/cloudera/Downloads/org-apache-commons-logging.jar :/home/cloudera/Downloads/zookeeper.jar 17/12/11 12:44:10 INFO zookeeper.ZooKeeper:客户端环境:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

【问题讨论】:

  • 您能否添加您收到的错误消息?还有 zookeeper 的状态,是否启动并运行?
  • 实际上是在虚拟机中运行这段代码,我得到了很多关于zookeeper的错误。
  • 由于我在虚拟机中创建 Hbase 表以进行测试,因此我正在添加所需的 Jar。并且不使用项目的jar,如果我错了请纠正我
  • 在问题本身中添加了错误。

标签: java hbase


【解决方案1】:

这是对我来说很好用的代码:

        conf = HBaseConfiguration.create();
        admin = new HBaseAdmin(conf);

        TableName tableName =  TableName.valueOf("test");
        HTableDescriptor htd = new HTableDescriptor(tableName);
        HColumnDescriptor hcd = new HColumnDescriptor("data");

        htd.addFamily(hcd);
        admin.createTable(htd);

并且还在 bash_profile 中添加以下环境变量

export HADOOP_HOME=/Users/karan.verma/Documents/backups/h/hadoop-2.6.4
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_PREFIX=/Users/karan.verma/Documents/backups/h/hadoop-2.6.4
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar

【讨论】:

  • 能否提供你使用过的jar文件
  • org.apache.hbasehbase-client1.3.1org.apache.hbasehbase-server0.95.0
  • 我的代码在 HBaseAdmin admin = new HBaseAdmin( hconfig ); 之后没有执行正如我在问题中提到的,它抛出了许多关于动物园管理员的信息。请帮帮我。
  • 一直执行到 Configuration hconfig = HBaseConfiguration.create(); HTableDescriptor htable = new HTableDescriptor("User");htable.addFamily(new HColumnDescriptor("Id"));htable.addFamily(new HColumnDescriptor("Name"));System.out.println("正在连接...") ;
  • 现在收到类似“无法为您的平台加载 native-hadoop 库...在适用的情况下使用内置 java 类”的警告
猜你喜欢
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 2016-06-10
  • 1970-01-01
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多