MapReduce 和 HBase 读取与写入
1. MapReduce 读取 HBase
步骤:
1、配置HBase连接: 在MapReduce作业中,需要配置HBase的连接信息,这通常通过hbasesite.xml
文件来完成。
2、创建HBase配置对象: 使用HBase的配置信息创建一个配置对象。
3、创建HTable实例: 使用配置对象创建一个HTable实例,该实例将用于访问HBase表。
4、获取扫描器(Scanner): 使用HTable实例创建一个扫描器,用于扫描表中的数据。
5、处理扫描结果: 遍历扫描器的结果集,对每一行数据进行处理。
6、关闭资源: 关闭扫描器和HTable实例。
示例代码:
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil; import org.apache.hadoop.hbase.mapreduce.TableMapper; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; public class HBaseReadExample { public static void main(String[] args) throws Exception { Configuration conf = HBaseConfiguration.create(); // 设置HBase连接信息 conf.set("hbase.zookeeper.quorum", "localhost"); conf.set("hbase.zookeeper.property.clientPort", "2181"); // 创建HBase配置对象 Configuration hbaseConf = HBaseConfiguration.create(conf); // 创建HTable实例 org.apache.hadoop.hbase.client.Connection connection = ConnectionFactory.createConnection(hbaseConf); Table table = connection.getTable(TableName.valueOf("my_table")); // 获取扫描器 Scan scan = new Scan(); ResultScanner scanner = table.getScanner(scan); // 处理扫描结果 for (Result result : scanner) { // 处理每一行数据 System.out.println(result); } // 关闭资源 scanner.close(); table.close(); connection.close(); } }
2. HBase 写入数据
步骤:
1、配置HBase连接: 同样需要配置HBase的连接信息。
2、创建HBase配置对象: 使用HBase的配置信息创建一个配置对象。
3、创建HTable实例: 使用配置对象创建一个HTable实例,该实例将用于访问HBase表。
4、创建Put实例: 使用HTable实例创建一个Put实例,用于插入数据。
5、添加数据到Put实例: 使用Put实例的add方法添加数据。
6、执行写入操作: 使用HTable实例的put方法执行写入操作。
7、关闭资源: 关闭HTable实例。
示例代码:
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.TableName; public class HBaseWriteExample { public static void main(String[] args) throws Exception { Configuration conf = HBaseConfiguration.create(); // 设置HBase连接信息 conf.set("hbase.zookeeper.quorum", "localhost"); conf.set("hbase.zookeeper.property.clientPort", "2181"); // 创建HBase配置对象 Configuration hbaseConf = HBaseConfiguration.create(conf); // 创建HTable实例 Connection connection = ConnectionFactory.createConnection(hbaseConf); Table table = connection.getTable(TableName.valueOf("my_table")); // 创建Put实例并添加数据 Put put = new Put(Bytes.toBytes("row1")); put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("column1"), Bytes.toBytes("value1")); // 执行写入操作 table.put(put); // 关闭资源 table.close(); connection.close(); } }
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/854919.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复