一个使用HBase的例子,如下。
import java.io.IOException;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Scanner;
import org.apache.hadoop.hbase.io.BatchUpdate;
import org.apache.hadoop.hbase.io.Cell;
import org.apache.hadoop.hbase.io.RowResult;
public class MyClient {
public static void main(String args[]) throws IOException {
// You need a configuration object to tell the client where to connect.
// But don't worry, the defaults are pulled from the local config file.
HBaseConfiguration config = new HBaseConfiguration();
// This instantiates an HTable object that connects you to the "myTable"
// table.
HTable table = new HTable(config, "myTable");
// To do any sort of update on a row, you use an instance of the BatchUpdate
// class. A BatchUpdate takes a row and optionally a timestamp which your
// updates will affect.
BatchUpdate batchUpdate = new BatchUpdate("myRow");
// The BatchUpdate#put method takes a Text that describes what cell you want
// to put a value into, and a byte array that is the value you want to
// store. Note that if you want to store strings, you have to getBytes()
// from the string for HBase to understand how to store it. (The same goes
// for primitives like ints and longs and user-defined classes - you must
// find a way to reduce it to bytes.)
batchUpdate.put("myColumnFamily:columnQualifier1",
"columnQualifier1 value!".getBytes());
// Deletes are batch operations in HBase as well.
batchUpdate.delete("myColumnFamily:cellIWantDeleted");
// Once you've done all the puts you want, you need to commit the results.
// The HTable#commit method takes the BatchUpdate instance you've been
// building and pushes the batch of changes you made into HBase.
table.commit(batchUpdate);
// Now, to retrieve the data we just wrote. The values that come back are
// Cell instances. A Cell is a combination of the value as a byte array and
// the timestamp the value was stored with. If you happen to know that the
// value contained is a string and want an actual string, then you must
// convert it yourself.
Cell cell = table.get("myRow", "myColumnFamily:columnQualifier1");
String valueStr = new String(cell.getValue());
// Sometimes, you won't know the row you're looking for. In this case, you
// use a Scanner. This will give you cursor-like interface to the contents
// of the table.
Scanner scanner =
// we want to get back only "myColumnFamily:columnQualifier1" when we iterate
table.getScanner(new String[]{"myColumnFamily:columnQualifier1"});
// Scanners in HBase 0.2 return RowResult instances. A RowResult is like the
// row key and the columns all wrapped up in a single interface.
// RowResult#getRow gives you the row key. RowResult also implements
// Map, so you can get to your column results easily.
// Now, for the actual iteration. One way is to use a while loop like so:
RowResult rowResult = scanner.next();
while(rowResult != null) {
// print out the row we found and the columns we were looking for
System.out.println("Found row: " + new String(rowResult.getRow()) + " with value: " +
rowResult.get("myColumnFamily:columnQualifier1".getBytes()));
rowResult = scanner.next();
}
// The other approach is to use a foreach loop. Scanners are iterable!
for (RowResult result : scanner) {
// print out the row we found and the columns we were looking for
System.out.println("Found row: " + new String(result.getRow()) + " with value: " +
result.get("myColumnFamily:columnQualifier1".getBytes()));
}
// Make sure you close your scanners when you are done!
scanner.close();
}
}
分享到:
相关推荐
本压缩包"javaApi_sparkhiveAPI_hbaseAPI.zip"包含了2019年8月至10月期间针对这些技术的Java版API实现,以及与Spark相关的Hive和HBase API。以下是关于这些技术的详细知识: 1. **Java API for Hive**: - **Hive*...
为了插入这些数据,我们需要使用HBase的API,如Java API或者HBase Shell。通常,我们需要创建一个表,定义列族,然后使用put命令将数据插入到指定的行和列。 插入数据的基本步骤如下: 1. 连接到HBase集群:使用...
- **test**: 测试用例,验证HBase的功能和性能。 在实际应用中,用户通常需要结合Hadoop集群的配置,调整HBase的配置参数,如region大小、内存使用、Compaction策略等,以满足特定场景的需求。同时,理解RowKey的...
这里我们使用JDBC连接MySQL,使用HBase Java API操作HBase。以下是一个简单的示例: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop....
- `src/main/java`: 存放核心源代码,包括HBase的服务器端和客户端API、RegionServer、Master、Zookeeper交互等。 - `src/test`: 测试用例,用于验证功能的正确性和性能。 - `src/resources`: 配置文件和其他资源...
1. **Maven构建系统**:HBase使用Maven作为构建工具,源码组织结构遵循Maven的标准目录结构,如src/main/java存放Java源代码,src/test/java存放测试代码。通过Maven的pom.xml文件可以了解项目的依赖关系和构建配置...
2. **测试代码**:在`src/test`目录下,有单元测试和集成测试用例,这些测试用例对于理解和验证HBase的功能非常有价值。 3. **配置文件**:在`conf`目录下,包含了HBase的默认配置,如`hbase-site.xml`,这是用户...
Thrift2是Thrift的升级版本,提供了更优化的性能和更完善的API。在Java中,我们可以利用Thrift2生成的客户端库来与HBase进行交互。以下是使用Java和Thrift2操作HBase的一些关键知识点: 1. **设置环境**:首先确保...
4. **lib目录**:包含了运行HBase所需的所有依赖库,这些库支持HBase的核心功能,如Java API、Zookeeper通信和HDFS交互。 5. **docs目录**:包含官方文档,对HBase的架构、API、操作指南等内容进行了详尽的解释。 6....
而 Apache Phoenix 是一个开源的 SQL 层,它为 HBase 提供了 SQL 接口,使得用户可以通过标准的 JDBC API 或者 SQL 客户端工具来访问 HBase 数据。 Squirrel SQL Client 是一款轻量级但功能强大的图形化数据库管理...
10. **Java API**:理解如何使用Java API来连接、操作HBase,以及处理异常情况。 通过这个smoketest-hbase项目,开发者或测试人员可以对HBase的健康状况进行快速检查,确保其核心功能的稳定性和可靠性。对于维护和...
8. **Test-HBase**: 测试模块,包含了HBase的单元测试和集成测试,这对于理解HBase的正确性验证和测试策略非常重要。 9. **HBase Hadoop Compat**: 类似于HBase Hadoop2 Compat,但针对Hadoop 1.x版本的兼容性。...
3. **连接HDFS**:使用Hadoop的`FileSystem` API建立与HDFS的连接。通过`FileSystem.get(conf)`方法,其中`conf`是包含HDFS配置信息的`Configuration`对象。 4. **读取HDFS文件**:获取文件的`Path`对象,然后使用`...
- **docs**:HBase的文档和API参考。 - **src**:源代码目录,分为java和test两个子目录,分别存放主代码和测试代码。 - **build**:编译后的二进制文件和文档。 - **ivy**:构建工具Ivy的相关文件。 在0.90.3版本...
2. `src/test`:测试代码,用于验证HBase的功能是否正常。 3. `pom.xml`:项目对象模型文件,定义了项目依赖、构建规则等信息,是Maven(Java项目构建工具)的关键配置文件。 4. `docs`:文档目录,可能包含用户指南...
在HBase方面,了解RegionServer、Zookeeper的角色,以及如何通过Java API或者HBase Shell进行数据操作是基础。深入学习可能涉及HBase的表设计、过滤器机制、以及性能调优等方面。 通过阅读提供的博客文章和解压后的...
在MKT场景下,通过Jstorm作业与HBase API交互,进行实时写入、批量写入和读取,同时支持ABTest、智能推荐、海外玩乐爬虫分析等多样化业务。 3. **监控体系**:为了确保HBase的稳定运行,携程构建了全面的监控系统。...
hbase-fs-rest is a InputStream/OutputStream lib for reading & writing file on . It's not very convenient for end-user. So, we build a HTTP-REST Service to simplify the operation. Basically, we use ...
此外,随着HBase版本的更新,相关的API可能会有所变动,因此在实际使用过程中也需要关注最新的文档和指南。 通过本文的学习,希望能够帮助大家更好地理解和掌握如何使用Python与HBase进行交互的基本方法。
1. **Spring的HBase模板(Spring HBase Template)** - 这是Spring提供的一个简化HBase操作的抽象层,允许开发者通过面向对象的方式来操作HBase,无需直接编写原生的HBase API代码。 2. **HBase的表和列族设计** - ...