如何在Python和Pandas(数据帧)中将条件SQL查询中的数据插入Hbase
假设我在表_name_a中有一些示例数据,如下所示:如何在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
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,我也爱我自己。终于,我可以自己解决了,哈哈哈。