Hadoop 提高Apache Hbase中的扫描性能

Hadoop 提高Apache Hbase中的扫描性能,hadoop,hbase,Hadoop,Hbase,我正在编写一个用例,帮助我提高扫描性能 访问我们网站的客户将作为日志生成,我们将对其进行处理,这通常由Apache Pig完成,并使用HBasStorage将Pig的输出直接插入hbase表(测试)。这将在每天早上进行。数据由以下列组成 客户ID |名称|访问URL |时间戳|位置|公司名称 我只有一个列族(test_族) 到目前为止,我已经为每一行生成了随机no,并将其作为该表的行键插入。对于ex,我将在表中插入以下数据 1725|xxx|www.something.com|127987834

我正在编写一个用例,帮助我提高扫描性能

访问我们网站的客户将作为日志生成,我们将对其进行处理,这通常由Apache Pig完成,并使用HBasStorage将Pig的输出直接插入hbase表(测试)。这将在每天早上进行。数据由以下列组成

客户ID |名称|访问URL |时间戳|位置|公司名称

我只有一个列族(test_族)

到目前为止,我已经为每一行生成了随机no,并将其作为该表的行键插入。对于ex,我将在表中插入以下数据

1725|xxx|www.something.com|127987834 | india |zzzz
1726|yyy|www.some.com|128389478 | UK | yyyy
如果是这样,我将为第一行添加1作为行键,为第二行添加2作为行键,依此类推

Note : Same id will be repeated for different days so I chose random no to be row-key
从我使用的表中查询数据时,{code>scan'test',{FILTER=>“SingleColumnValueFilter('test_family','Customerid',=,'binary:1002')”}
返回结果需要2分钟以上的时间`

建议我一种方法,这样我就必须把这个过程缩短到1到2秒,因为我在实时分析中使用它


谢谢

根据您提到的查询,我假设您需要基于客户ID的记录。如果正确,那么为了提高性能,您应该使用客户ID作为行键

但是,单个客户ID可以有多个条目。因此,最好将行键设计为CustomerID |唯一编号。这个唯一的数字也可以是时间戳。这取决于你的要求

要在这种情况下扫描数据,需要使用行键上的
PrefixFilter
。这将给您带来更好的性能


希望这有帮助。

根据您提到的查询,我假设您需要基于客户ID的记录。如果正确,那么为了提高性能,您应该使用客户ID作为行键

但是,单个客户ID可以有多个条目。因此,最好将行键设计为CustomerID |唯一编号。这个唯一的数字也可以是时间戳。这取决于你的要求

要在这种情况下扫描数据,需要使用行键上的
PrefixFilter
。这将给您带来更好的性能


希望有此帮助。

HBase不是为此类查询而设计的。也许你可以改用MySQL?HBase不是为这种查询而设计的。也许你可以改用MySQL?嗨,maddy,我需要在hbase配置中进行任何更改以获得更好的性能吗?你可以在hbase配置中进行更改以获得更好的结果。但为此,我需要更多地了解场景。不过,一个简单的性能优化是设置扫描仪缓存功能。它可以大大提高您的性能。我正在中实现一个web服务,当我们单击customerid(这是其他查询的结果)时,它必须检索与存储在hbase表中的id相关的记录。在这种情况下,只需尝试按照前面的建议设计行键,并在扫描时使用扫描缓存即可。。祝你一切顺利……)我有一个问题,hbase是否会在2秒钟或3秒钟内返回记录Shi maddy我是否需要在hbase配置中进行任何更改以获得更好的性能您可以在hbase配置中进行更改以获得更好的结果。但为此,我需要更多地了解场景。不过,一个简单的性能优化是设置扫描仪缓存功能。它可以大大提高您的性能。我正在中实现一个web服务,当我们单击customerid(这是其他查询的结果)时,它必须检索与存储在hbase表中的id相关的记录。在这种情况下,只需尝试按照前面的建议设计行键,并在扫描时使用扫描缓存即可。。祝你一切顺利……)我有一个问题,hbase是在2秒还是3秒内返回记录