相关博客
-
HBase集群中原有数据:
第一步:创建Maven项目,导入依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-auth</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>2.1.3</version>
<!-- 去除版本不一致的传递依赖-->
<exclusions>
<exclusion>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-mapreduce</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-common</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-endpoint</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-metrics-api</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-thrift</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-rest</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>3.1.2</version>
</dependency>
第二步:加入log4j.properties
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
```java
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File =logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
第三步:搭建代码框架
功能代码框架
public class HBaseUtil {
private static Admin admin = null;
private static Connection conn = null;
static {
//使用HBaseConfiguration的单例方法实例化
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "hcmaster:2181,hcslave1:2181,hcslave2:2181");
conf.set("hbase.zookeeper.property.clientPort", "2181"); //此行为默认值,可以省略
try {
conn = ConnectionFactory.createConnection(conf);
admin = conn.getAdmin();
} catch (IOException e) {
e.printStackTrace();
}
}
}
测试代码框架
public class HBaseUtilTest {
}
具体代码
判断表是否存在
- 功能代码
public static boolean isTableExist(String tableName) throws Exception {
boolean res = admin.tableExists(TableName.valueOf(tableName));
admin.close();
return res;
}
- 测试代码
@Test
public void isTableExist() throws Exception {
System.out.println(HBaseUtil.isTableExist("stu"));
System.out.println(HBaseUtil.isTableExist("student"));
System.out.println(HBaseUtil.isTableExist("hc:stu"));
}
- 结果
创建表
- 功能代码
public static void createTable(String tableName, String... columnFamily) throws Exception {
//判断表是否存在
if (isTableExist(tableName)) {
System.out.println("表" + tableName + "已存在");
return;
}
//创建表描述器,表名需要转字节
TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));
//添加列族
for (String cf : columnFamily) {
ColumnFamilyDescriptor descriptor = ColumnFamilyDescriptorBuilder.of(cf);
builder.setColumnFamily(descriptor);
}
//根据对表的配置,创建表
admin.createTable(builder.build());
admin.close();
System.out.println("表" + tableName + "创建成功!");
}
- 测试代码
@Test
public void createTable() throws Exception {
HBaseUtil.createTable("stu2", "info1","info2");
}
- 结果
删除表
- 功能代码
public static void dropTable(String tableName) throws Exception {
if (isTableExist(tableName)) {
admin.disableTable(TableName.valueOf(tableName));
admin.deleteTable(TableName.valueOf(tableName));
admin.close();
System.out.println("表" + tableName + "删除成功!");
} else {
System.out.println("表" + tableName + "不存在!");
}
}
- 测试代码
@Test
public void dropTable() throws Exception {
HBaseUtil.dropTable("stu2");
}
- 结果