如何在hbase中通过rowkey和cell扫描特定的列值?

20jt8wwn  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(449)

我对hbase非常陌生,我有一个hbase表,有几个列(hebe\u30,hebe\u31等等),在哪里 code+date 是行键。
我有如下数据

ROW                                COLUMN+CELL                                                                                       
 000330-20180131                   column=atune:hebe_30, timestamp=1574324850676, value=3.0                                                
 000330-20180131                   column=atune:hebe_31, timestamp=1574324850676, value=6.0                                                
 000330-20180201                   column=atune:hebe_32, timestamp=1574324849744, value=68.0                                                
 000330-20180201                   column=atune:hebe_33, timestamp=1574324849744, value=88.0                                                
 000330-20180202                   column=atune:hebe_34, timestamp=1574324855557, value=330.0

我怎样才能拿到唱片 code+date+cell 在python中?例如 000330-20180131-hebe_30 ,我不知道使用哪个过滤器?有吗 CASE WHEN, WHERE OR HAVING 像hbase中的sql查询这样的方法?下面的python代码可以扫描一条记录 code+date ,我不得不让 atune:hebe_30 是默认参数,但我们需要的是 code+date+atune:self.hebe_** .

import pandas as pd
from db_connect import impala, hbasecon, ATUNETABLE

class query:
    def __init__(self, code='', date=''):
        self.code = code
        self.date = date
        self.hintltable = hbasecon(table=ATUNETABLE).gettable()

    def atune_hebe(self):
        val_end = ''
        rows_end = self.hintltable.scan(
                row_start=self.code + '-' + self.date,
                row_stop=self.code + '-00000000' ,
                columns=['atune:hebe_30'], reverse=True, limit=1
        )

        for k, v in rows_end:
            val_end = eval(v['atune:hebe_30'])
        return {"val": {"0": val_end}}

非常感谢你的建议

lymgl2op

lymgl2op1#

可以使用columnprefixfilter
我猜在python中它看起来像:

for k, v in table.scan(filter="ColumnPrefixFilter('your_prsifx_str')"):
    print k

相关问题