面试题答案
一键面试- 打开HBase Shell:在命令行中输入
hbase shell
进入HBase交互式环境。 - 扫描表并筛选数据:使用
scan
命令来扫描表并过滤出销售数量大于100的记录。命令如下:
scan'sales_table', {COLUMNS => ['data:product', 'data:quantity'], FILTER => "SingleColumnValueFilter('data', 'quantity', >, 'binary:100')"}
上述命令解释:
scan'sales_table'
:表示扫描sales_table
表。COLUMNS => ['data:product', 'data:quantity']
:指定只返回data
列族下的product
和quantity
列。FILTER => "SingleColumnValueFilter('data', 'quantity', >, 'binary:100')"
:这是一个过滤器,用于筛选出data
列族下quantity
列的值大于100的记录。
- 统计满足条件的产品总数:要统计满足条件的产品总数,可以先将满足条件的数据存储到一个临时文件(假设使用
hadoop fs -get
命令将扫描结果导出到本地文件,这里省略导出步骤,直接假设有一个result.txt
文件包含了扫描结果),然后使用Linux命令统计行数,例如:
wc -l result.txt
在HBase Shell中也可以通过编程方式实现统计,比如将扫描结果存储到一个Ruby数组中,然后统计数组长度,示例如下:
count = 0
scan('sales_table', {COLUMNS => ['data:product', 'data:quantity'], FILTER => "SingleColumnValueFilter('data', 'quantity', >, 'binary:100')"}).each do |row|
count += 1
end
puts "满足条件的产品总数: #{count}"
上述Ruby代码是在HBase Shell环境中的,通过循环扫描结果并计数来统计满足条件的产品总数。