您好我在那里使用SQL,但我需要从HBase表中读取数据.对此的任何帮助都会很棒.一本书或者可能只是从表中读取的一些示例代码.有人说使用扫描仪可以解决问题,但我不知道如何使用它.
我在Amazon XLarge实例(16Gb RAM,4核CPU)上部署了4个节点HBase v0.90.4-cdh3u3集群,其中8Gb堆-Xmx分配给HRegion服务器,2Gb用于数据节点.HMaster\ZK\Namenode位于单独的XLarge实例上.目标数据集是1亿条记录(每条记录是10个字段,100个字节).基准测试从并行100个线程同时执行.
与YCSB团队在YCSB论文中所取得的成绩相比,我对阅读延迟感到困惑.它们的吞吐量高达7000 ops/sec,延迟为15 ms(第10页,读取延迟图表).在90%读取/ 10%写入工作负载时,我无法获得高于2000 ops/sec的吞吐量.写入非常快,禁用自动提交(响应在几毫秒内),而读取延迟平均不低于70毫秒.
这些是我使用的一些HBase设置:
您建议使用哪些设置来查看\ tune以加快HBase的读取速度?
我是hbase的新手.您能告诉我如何将列添加到列族中.我有这样的数据:
{
name: abc
addres: xyz
}
Run Code Online (Sandbox Code Playgroud)
我有一个列家庭人员的表测试.如何将姓名和地址作为列添加到此人.请在hbase命令行以及java中显示.
我想用过滤器进行hbase扫描.例如,我的表有列族A,B,C,而A有一列X.有些行有X列,有些则没有.如何实现过滤器以过滤掉列X的所有行?
我有一个HBase(v0.94.7)表,其中包含一个列族,并且随着时间的推移会添加列.这些列被命名为它们创建的时间戳,因此除非我查询该行,否则我不知道它具有的所有列.
现在给定一行,我想原子地删除此列族的所有现有列,并添加一组新的列和值.
所以我想到使用HBase的RowMutations,如:
RowMutations mutations = new RowMutations(row);
//delete the column family
Delete delete = new Delete(row);
delete.deleteFamily(cf);
//add new columns
Put put = new Put(row);
put.add(cf, col1, v1);
put.add(cf, col2, v2);
//delete column family and add new columns to same family
mutations.add(delete);
mutations.add(put);
table.mutateRow(mutations);
Run Code Online (Sandbox Code Playgroud)
但是这段代码最终做的只是删除列族,它不会添加新列.这种行为有望吗?
如果是这样,那么我如何实现我的目标,即用一组新的列原子替换列族的所有列?
以下是相同的测试用例:
import junit.framework.Assert;
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.TableExistsException;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import java.util.NavigableMap;
public class …Run Code Online (Sandbox Code Playgroud) 我们正在开发一个场景,我们需要在插入之前检查记录的存在.如果记录已经存在,我们不再插入它.我们正在分批进行.首先,我们创建一批获取,以查看我们要插入的记录的存在.当表大小较小且非常间歇时,不会出现此问题.Get的建议批量大小是多少.而什么是插入前检查记录的存在,最好的方法?感谢您的回复..
这是堆栈跟踪..
java.util.concurrent.ExecutionException: java.net.SocketTimeoutException: Call to b16-pf-dv-093.abc.com/10.106.8.103:60020 failed on socket timeout exception: java.net.SocketTimeoutException: 60000 millis timeout while waiting for channel to be ready for read. ch : java.nio.channels.SocketChannel[connected local=/10.106.8.133:41903 remote=b16-pf-dv-093.abc.com/10.106.8.103:60020]
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
at java.util.concurrent.FutureTask.get(FutureTask.java:83)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1604)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1456)
at org.apache.hadoop.hbase.client.HTable.batch(HTable.java:757)
at org.apache.hadoop.hbase.client.HTable.get(HTable.java:726)
at org.apache.hadoop.hbase.client.HTablePool$PooledHTable.get(HTablePool.java:367)
at com.abc.psp.core.metering.util.HBaseClient.get(HBaseClient.java:263)
at com.abc.psp.core.metering.dao.MeteringHBaseDAOImpl.addMeteredRecords(MeteringHBaseDAOImpl.java:374)
at com.abc.psp.core.metering.dao.MeteringHBaseDAOImpl.addMeteredRecords(MeteringHBaseDAOImpl.java:342)
at HBaseTest.main(HBaseTest.java:32)
Caused by: java.net.SocketTimeoutException: Call to b16-pf-dv-093.abc.com/10.106.8.103:60020 failed on socket timeout exception: java.net.SocketTimeoutException: 60000 millis timeout while waiting for channel to be ready for read. …Run Code Online (Sandbox Code Playgroud) 有没有办法用它在HBase或OLAP中创建CUBE DIMENSIONS?我想用我的HBASE或HIVE创建CUBE DIMENSIONS类应用程序并将其与SSAS连接以用于报告目的,这可能吗?如果是soo,请指导我一些链接和代码.
我试图在hive中创建多维数据集视图,我想知道HBase是否可行.
谢谢...
在Hadoop中,“ AM容器”中的AM是什么意思?
关于MapReduce错误,有很多帖子,“两次由于AM容器而失败” ...“容器启动时出现异常:org.apache.hadoop.util.Shell $ ExitCodeException” ...但没有一个解决我的问题的我的HBase工作)。
我是一个初学者,我想从了解AM代表什么开始。我在网上找不到任何东西。
我从HBase集群中删除了一个regionserver.我从中删除了主机名 $HBASE_HOME/conf/regionservers,并重新启动了HBase集群,但是HBase UI仍然将删除的区域服务器显示为"死"区域服务器.
hbase shell中的'status'命令也将其显示为死区服务器.我该怎么摆脱它?
单列上的过滤列表家庭工作,但多个columnFamily返回0行.问题陈述与如何将多个QualifierFilter应用于HBase中的行相同
但我不能使用SingleColumnValueFilter,因为列限定符是时间戳.所以我的过滤器看起来像:
val master_filter_list = new FilterList()
val outer_fl_A = new FilterList()
val cf_filter = new FamilyFilter (CompareOp.EQUAL, new BinaryComparator("ac".getBytes))
val qualifier_range = new ColumnRangeFilter(Bytes.toBytes(fromDate.getMillis), true, Bytes.toBytes(toDate.getMillis), true)
val ac_fl = new ValueFilter(comparison_operator, new BinaryComparator(Bytes.toBytes(value.toString.toInt)))
outer_fl_A.addFilter(cf_filter)
outer_fl_A.addFilter(qualifier_range)
outer_fl_A.addFilter(ac_fl)
master_filter_list.addFilter(outer_fl_A)
val outer_fl_B = new FilterList()
val cf_filter = new FamilyFilter (CompareOp.EQUAL, new BinaryComparator("t".getBytes))
val qualifier_range = new ColumnRangeFilter(Bytes.toBytes(fromDate.getMillis), true, Bytes.toBytes(toDate.getMillis), true)
val ts_fl = new ValueFilter(comparison_operator, new BinaryComparator(value.toString.getBytes))
outer_fl_B.addFilter(cf_filter)
outer_fl_B.addFilter(qualifier_range)
outer_fl_B.addFilter(ts_fl)
master_filter_list.addFilter(outer_fl_B)
Run Code Online (Sandbox Code Playgroud)
只从表中获得具有outer_fl_A AND outer_fl_B的行的正确方法是什么?