求一份尚硅谷的Java视频教程?
更新时间:2024-04-28 10:04
最满意答案
写了个Hbase新的api的增删改查的工具类,以供参考,直接拷贝代码就能用,散仙觉得基础的功能,都有了,代码如下: package com.dhgate.hbase.test; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.ResultScanner; import org.apache.hadoop.hbase.client.Scan; import org.apache.hadoop.hbase.filter.PageFilter; import org.apache.hadoop.hbase.filter.PrefixFilter; import org.apache.hadoop.hbase.util.Bytes; /** * 基于新的API * Hbase0.96版本 * 写的工具类 * * @author qindongliang * 大数据技术交流群: 376932160 * * **/ public class HbaseCommons { static Configuration conf=HBaseConfiguration.create(); static String tableName=""; public static void main(String[] args)throws Exception { //String tableName="test"; //createTable(tableName, null); } /** * 批量添加数据 * @param tableName 标名字 * @param rows rowkey行健的集合 * 本方法仅作示例,其他的内容需要看自己义务改变 * * **/ public static void insertList(String tableName,String rows[])throws Exception{ HTable table=new HTable(conf, tableName); List<Put> list=new ArrayList<Put>(); for(String r:rows){ Put p=new Put(Bytes.toBytes(r)); //此处示例添加其他信息 //p.add(Bytes.toBytes("family"),Bytes.toBytes("column"), 1000, Bytes.toBytes("value")); list.add(p); } table.put(list);//批量添加 table.close();//释放资源 } /** * 创建一个表 * @param tableName 表名字 * @param columnFamilys 列簇 * * **/ public static void createTable(String tableName,String[] columnFamilys)throws Exception{ //admin 对象 HBaseAdmin admin=new HBaseAdmin(conf); if(admin.tableExists(tableName)){ System.out.println("此表,已存在!"); }else{ //旧的写法 //HTableDescriptor tableDesc=new HTableDescriptor(tableName); //新的api HTableDescriptor tableDesc=new HTableDescriptor(TableName.valueOf(tableName)); for(String columnFamily:columnFamilys){ tableDesc.addFamily(new HColumnDescriptor(columnFamily)); } admin.createTable(tableDesc); System.out.println("建表成功!"); } admin.close();//关闭释放资源 } /** * 删除一个表 * @param tableName 删除的表名 * */ public static void deleteTable(String tableName)throws Exception{ HBaseAdmin admin=new HBaseAdmin(conf); if(admin.tableExists(tableName)){ admin.disableTable(tableName);//禁用表 admin.deleteTable(tableName);//删除表 System.out.println("删除表成功!"); }else{ System.out.println("删除的表不存在!"); } admin.close(); } /** * 插入一条数据 * @param tableName 表明 * @param columnFamily 列簇 * @param column 列 * @param value 值 * * ***/ public static void insertOneRow(String tableName,String rowkey,String columnFamily,String column,String value)throws Exception{ HTable table=new HTable(conf, tableName); Put put=new Put(Bytes.toBytes(rowkey)); put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value)); table.put(put);//放入表 table.close();//释放资源 } /** * 删除一条数据 * @param tableName 表名 * @param row rowkey行键 * * */ public static void deleteOneRow(String tableName,String row)throws Exception{ HTable table=new HTable(conf, tableName); Delete delete=new Delete(Bytes.toBytes(row)); table.delete(delete); table.close(); } /** * 删除多条数据 * @param tableName 表名 * @param rows 行健集合 * * **/ public static void deleteList(String tableName,String rows[])throws Exception{ HTable table=new HTable(conf, tableName); List<Delete> list=new ArrayList<Delete>(); for(String row:rows){ Delete del=new Delete(Bytes.toBytes(row)); list.add(del); } table.delete(list); table.close();//释放资源 } /** * 获取一条数据,根据rowkey * @param tableName 表名 * @param row 行健 * * **/ public static void getOneRow(String tableName,String row)throws Exception{ HTable table=new HTable(conf, tableName); Get get=new Get(Bytes.toBytes(row)); Result result=table.get(get); printRecoder(result);//打印记录 table.close();//释放资源 } /** * 查看某个表下的所有数据 * * @param tableName 表名 * */ public static void showAll(String tableName)throws Exception{ HTable table=new HTable(conf, tableName); Scan scan=new Scan(); ResultScanner rs=table.getScanner(scan); for(Result r:rs){ printRecoder(r);//打印记录 } table.close();//释放资源 } /** * 查看某个表下的所有数据 * * @param tableName 表名 * @param rowKey 行健 * */ public static void ScanPrefixByRowKey(String tableName,String rowKey)throws Exception{ HTable table=new HTable(conf, tableName); Scan scan=new Scan(); scan.setFilter(new PrefixFilter(Bytes.toBytes(rowKey))); ResultScanner rs=table.getScanner(scan); for(Result r:rs){ printRecoder(r);//打印记录 } table.close();//释放资源 } /** * 查看某个表下的所有数据 * * @param tableName 表名 * @param rowKey 行健扫描 * @param limit 限制返回数据量 * */ public static void ScanPrefixByRowKeyAndLimit(String tableName,String rowKey,long limit)throws Exception{ HTable table=new HTable(conf, tableName); Scan scan=new Scan(); scan.setFilter(new PrefixFilter(Bytes.toBytes(rowKey))); scan.setFilter(new PageFilter(limit)); ResultScanner rs=table.getScanner(scan); for(Result r:rs){ printRecoder(r);//打印记录 } table.close();//释放资源 } /** * 根据rowkey扫描一段范围 * @param tableName 表名 * @param startRow 开始的行健 * @param stopRow 结束的行健 * **/ public void scanByStartAndStopRow(String tableName,String startRow,String stopRow)throws Exception{ HTable table=new HTable(conf, tableName); Scan scan=new Scan(); scan.setStartRow(Bytes.toBytes(startRow)); scan.setStopRow(Bytes.toBytes(stopRow)); ResultScanner rs=table.getScanner(scan); for(Result r:rs){ printRecoder(r); } table.close();//释放资源 } /** * 扫描整个表里面具体的某个字段的值 * @param tableName 表名 * @param columnFalimy 列簇 * @param column 列 * **/ public static void getValueDetail(String tableName,String columnFalimy,String column)throws Exception{ HTable table=new HTable(conf, tableName); Scan scan=new Scan(); ResultScanner rs=table.getScanner(scan); for(Result r:rs){ System.out.println("值: " +new String(r.getValue(Bytes.toBytes(columnFalimy), Bytes.toBytes(column)))); } table.close();//释放资源 } /** * 打印一条记录的详情 * * */ public static void printRecoder(Result result)throws Exception{ for(Cell cell:result.rawCells()){ System.out.print("行健: "+new String(CellUtil.cloneRow(cell))); System.out.print("列簇: "+new String(CellUtil.cloneFamily(cell))); System.out.print(" 列: "+new String(CellUtil.cloneQualifier(cell))); System.out.print(" 值: "+new String(CellUtil.cloneValue(cell))); System.out.println("时间戳: "+cell.getTimestamp()); } } } 转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦
相关问答
更多-
如何使用Java API操作Hbase[2022-07-19]
写了个Hbase新的api的增删改查的工具类,以供参考,直接拷贝代码就能用,散仙觉得基础的功能,都有了,代码如下: package com.dhgate.hbase.test; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.Cel ... -
用java api对hbase的操作有几种形式[2022-07-05]
通过对Hbase API的使用,下面例子举例了常见对HBase的操作,如下所示: [java] view plain copy package net.csdn.jtlyuan; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.ha ... -
来自Java的HBase扫描api(HBase scan api from Java)[2023-06-21]
Pheonix是完全不同的数据检索方法......我希望在测试时,测试数据可用! 以下代码应该有效。 for (Result result = scanner.next(); (result != null); result = scanner.next()) { for(KeyValue keyValue : result.list()) { System.out.println("Qualifier : " + keyValue.getKeyString() + " : Valu ... -
如果您在独立模式下的hbase-site.xml为空(),则不必设置任何内容。 如果已覆盖hbase-site.xml中的任何内容,则最好添加该hbase-site.xml,而不是单独设置参数。 Configuration config = HBaseConfiguration.create(); config.addResource("
/hbase-site.xml"); If your hbase-site.xml in standalone mode is ... -
使用shell并使用Java API为HBase中的列族设置TTL(Set TTL for a column family in HBase using shell and using Java API)[2022-08-20]
使用Java API: HColumnDescriptor cfDescriptor = new HColumnDescriptor(Bytes.toBytes("cfName")); cfDescriptor.setTimeToLive(20); // in seconds tableDesc.addFamily(cfDescriptor); admin.createTable(tableDesc); 并使用shell: alter ‘tableName′, NAME => ‘cfname′, TTL ... -
将Get操作列表传递给批处理调用: ... import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Get; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.client.Result; imp ...
-
在您的conf文件“hbase-env.sh”中:而不是您拥有的行: export HBASE_OPTS="-XX:+UseConcMarkSweepGC" 添加: -Djava.security.krb5.realm= -Djava.security.krb5.kdc= 因此该行将export HBASE_OPTS="-XX:+UseConcMarkSweepGC -Djava.security.krb5.realm= -Djava.security.krb5.kdc="在此处查看上下文: OSX上的Ha ...
-
HBase:使用Java API创建表时指定VERSIONS(HBase: Specify VERSIONS while creating table using Java API)[2023-09-28]
每列系列指定最大版本和其他ttl类型设置。 所以最大版本在HColumnDescriptor上 。 Max versions, and other ttl type settings, is specified per column family. So the max versions is on the HColumnDescriptor. -
通过设置“HADOOP_CLASSPATH”如下所示解决问题,然后在同一个终端运行hadoop / hbase jar: export HADOOP_CLASSPATH="$HADOOP_CLASSPATH:/usr/hdp/2.3.4.0-3485/hbase/lib/hbase-client.jar:/usr/hdp/2.3.4.0-3485/hbase/lib/hbase-common.jar:/usr/hdp/2.3.4.0-3485/hbase/lib/hbase-protocol-1.1.2. ...
-
这似乎是群集的问题。 你能确保HBase幸福健康,所有Region服务器都启动并运行吗? 请打开shell并首先列出表格以确保基本检查。另外,检查是否有任何版本的罐子不匹配。 如果你从下面的集群运行是肯定的射击方法,以避免任何意外。 Configuration conf = HBaseConfiguration.create(); conf.addResource("core-site.xml"); conf.addResource("hbase-site.xml"); conf.addResource(" ...