如何在Python和Pandas(数据帧)中将条件SQL查询中的数据插入Hbase

如何在Python和Pandas(数据帧)中将条件SQL查询中的数据插入Hbase,python,pandas,dataframe,hbase,impala,Python,Pandas,Dataframe,Hbase,Impala,假设我在表_name_a中有一些示例数据,如下所示: code val_a val_b remark date ------------------------------------------ 1 00001 500 0.1 111 20191108 2 00001 1000 0.2 222 20191109 3 00002 200 0.1 111 20

假设我在表_name_a中有一些示例数据,如下所示:

    code     val_a  val_b    remark   date
   ------------------------------------------
1   00001    500    0.1      111      20191108
2   00001    1000   0.2      222      20191109
3   00002    200    0.1      111      20191110
4   00002    400    0.3      222      20191111
5   00001    200    0.2      333      20191112
6   00001    400    0.1      444      20191113
    code    111_a
   ---------------
1   00001    500       
如果我按如下方式查询Hbase(该值来自select code,val_a来自表_name_a,其中备注=111):

我的预期产出如下:

    code     val_a  val_b    remark   date
   ------------------------------------------
1   00001    500    0.1      111      20191108
2   00001    1000   0.2      222      20191109
3   00002    200    0.1      111      20191110
4   00002    400    0.3      222      20191111
5   00001    200    0.2      333      20191112
6   00001    400    0.1      444      20191113
    code    111_a
   ---------------
1   00001    500       
我只知道如何在Pythonpandas中导入这样的所有数据

from db_conn import impala, hbasecon
import numpy as np
import pandas as pd


def main():
    conn_impa = impala().getcon()
    sql = """ SELECT * FROM table_name_a """
    df = pd.read_sql(sql=sql, con=conn_impa)
    df = df.fillna("")
    num = len(df)
    if num > 0:
        hfdtable = hbasecon(FEDMTABLE).gettable()
        with hfdtable.batch(batch_size=1000) as b:
            df.apply(lambda row: b.put(row["code"], {'table_name_a:code': str(row["code"])}), axis=1)
            df.apply(lambda row: b.put(row["val_a"], {'table_name_a:val_a': str(row["val_a"])}), axis=1)
            df.apply(lambda row: b.put(row["val_b"], {'table_name_a:val_b': str(row["val_b"])}), axis=1)
            df.apply(lambda row: b.put(row["date"], {'table_name_a:date': str(row["date"])}), axis=1)
            df.apply(lambda row: b.put(row["remark"], {'table_name_a:remark': str(row["remark"])}), axis=1)
    return True


if __name__ == '__main__':
    main()
但我不知道如何使用Python将数据导入Hbase,因为Hbase需要111_a,这是带有“111”注释的值


非常感谢您的建议。

好吧,这是我的解决方案,我希望它能帮助其他人。我爱Python,我爱SQL,我也爱我自己。终于,我可以自己解决了,哈哈哈。